(Laravel) bladeのディレクティブの使い方を解説

(Laravel) bladeのディレクティブの使い方を解説

 

本記事では、
Laravelのbladeで使えるディレクティブについて、使い方を解説していく。

 

(Laravel) bladeとは

Laravelのbladeとは、
Laravelで使われているテンプレートエンジンのことだ。

テンプレートエンジンとは、
画面表示のファイルを分かりやすく、簡単に作ることができる様にしたもので、
PHPでは有名なのでいくとちょっと古いがSmartyなどが挙げられる。

Laravelではこのbladeと呼ばれるテンプレートエンジンを採用しており、画面の作成時、動的な部分はbladeの機能を使用することで通常のPHPプログラムを記述するよりも簡単かつ分かりやすくソースコードを記述することができる。

 

(blade) ディレクティブとは

bladeのディレクティブとは、
bladeで使える、@から始まる範囲内で、特定の処理をする記述方法のことだ。

@for (初期値 ; 条件 ; 後処理 )

//繰り返し処理

@endfor

 

ディレクティブのおかげで、画面の動的部分のコードをスッキリと記述することが可能となる。

 

従来のphp通りの想像しやすいディレクティブ




ディレクティブがなんなのか全くわからない人でも、
下の例を見れば使い方は容易に想像できると思うので、簡単に紹介する。

 

if文のディレクティブ

@if (条件)
    //処理
@elseif ()
    //処理
@else
    //処理
@endif

 

普通のif文と違うのは、中かっこが無いことだ。
@と@endの間に処理を書いていく

 

for文のディレクティブ

@for (初期値 ; 条件 ; 後処理 )
    //処理
@endfor

 

foreach文のディレクティブ

@foreach ($配列 as $変数)
    //処理
@endforeach

 

while文のディレクティブ

@while (条件)
    //処理
@endwhile

 

上記繰り返しの処理(for、foreach、while)中で、下記ディレクティブを使用することも可能。

  • @break
  • @continue

 

これも普通通りのルール(処理抜け、処理スキップ)と変わらない。
注意点としては、処理を途中で遮るだけなので、@endbreakとかは書かなくて良い。

 

繰り返し処理で使える特殊な$loop変数

bladeでは$loopという、
繰り返し処理で使える特殊な変数が存在する。

実態はオブジェクトで、
「$loop->取り出したい値」とアクセスすることで、
繰り返し処理中の様々な情報(プロパティ)にアクセスすることが可能となる。

 

以下$loop変数の様々なプロパティへのアクセスまとめ

$loop変数の様々なプロパティへのアクセス
  • $loop->index 現在のインデックス(ゼロから開始)
  • $loop->iteration 現在の繰り返し回数(1から開始)
  • $loop->remaining あと何回繰り返すか(残り回数)
  • $loop->count 繰り返しで使っている配列の要素数
  • $loop->first 最初の繰り返しかどうか(最初ならtrue)
  • $loop->last 最後の繰り返しかどうか(最後ならtrue)
  • $loop->depth 繰り返しのネスト数
  • $loop->parent ネストしている場合、親の繰り返しのループ変数を示す

 

bladeで使える特殊なディレクティブ

次は、
bladeで使える特殊なディレクティブについて紹介していく。

 

unless文のディレクティブ

@unless (条件)
    //処理
@else
    //処理
@endunless

 

unlessディレクティブは、
ifの真逆の働きをするディレクティブ
だ。条件がfalseの場合に分岐に入る。

なのでelse文を加えた場合、本来trueのものがelseの分岐に入る

 

empty文のディレクティブ

@empty (変数)
    //処理
@else
    //処理
@endempty

 

emptyディレクティブは、
条件に指定した変数が空の場合に分岐に入ってくるディレクティブ
だ。

なのでelse文を加えた場合、空でない場合にelseの分岐に入ってくる

 

isset文のディレクティブ

@isset (変数)
    //処理
@else
    //処理
@endisset

 

issetディレクティブは、
変数そのものが定義されているか判断するディレクティブ
だ。

変数が定義されている、かつnullでない場合に、trueとなる。
なのでelseを加えた場合や、変数が未定義の場合にfalseとなる。

 

phpを記述できるディレクティブ

@php
    //処理
@endphp

 

phpディレクティブを記述することで、
PHPのスクリプトそのものを書き込むことができる

ただ、注意点として、
bladeはあくまでviewなので、このディレクティブでモリモリ複雑なphpを書き込むことは推奨されない

 

関連記事

(Laravel) ビューの使い方(基本)

http://laravel.jp/

https://laravel.com/docs/9.x/blade

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。