Laravelではbladeテンプレートを使用してviewを作成できます。
resources/viewsフォルダ以下にviewファイルを置き、拡張子をOOO.blade.phpにすることでbladeテンプレートとして扱えます。
viewファイル読み込み
viewヘルパー関数を使うことでviewファイルの読み込みと変数の受け渡しを行うことができます。
viewヘルパー関数の第一引数にviewファイルのパスを、第二引数にviewに渡す変数を指定します。
viewファイルパスは
resources/views以下を指定し、ディレクトリは/(スラッシュ)ではなく.(ドット)で繋げ、拡張子なしのファイル名を記述します。
例えばresources/views/hoge/fuga.blade.php
を読み込む場合は以下になります。
public function index() {
return view('hoge.fuga');
}
viewファイルへの変数受け渡し
viewヘルパー関数の第二引数に連想配列を渡すことでviewファイルに変数を受け渡しすることができます。
viewファイル内では連想配列のkeyを変数名として指定できます。
public function index() {
$data = [
'hoge' => 'fuga',
];
return view('hoge.fuga', $data);
}
{{ $hoge }}
fuga
また、phpのcompact関数を使うことで簡単に変数を渡すことができます。
public function index() {
$hoge = 'fuga';
return view('hoge.fuga', compact('hoge'));
}
viewファイルで変数を使う
viewヘルパー関数で渡された変数には マスタッシュ構文 {{ }}
内で使用可能です。
{{ $hoge }}
マスタッシュ構文では変数展開時にXSS対策のため自動でHTMLエスケープが実行されます(=タグがそのまま文字列として表示される)。
動的にhtmlを作成したい場合にエスケープを無効にしたい場合は、代わりに{!! !!}
を使用してください。(中括弧は一つでok)
{!! $hoge !!}
viewファイル内で{{ }}
をそのまま使いたい場合は先頭に@をつけてください。変数展開されず出力されます。
@{{ $hoge }}
viewファイルでコメントを記述する
htmlのコメント(<!-- comment -->)をそのまま記述することも可能ですが、htmlファイルとして出力されるのでユーザーから見えてしまいます。
bladeテンプレート内でのみ残るコメントにする場合は {{-- comment --}}
を使います。
ディレクティブ制御構文
bladeテンプレートにはview制御を行うifやforeachが使えるディレクティブ構文が使えます。
ディレクティブ構文内では変数が使えます。
ディレクティブ構文には先頭に@を付けます。
if文
@if, @elseif, @else, @endif, @unless, @isset, @empty
があります。
@if ($isActive)
アクティブ
@else
非アクティブ
@endif
@unless ($isActive)
@endunless
```lang:viewファイル
@isset ($fuga)
fugaが定義されていない
@endisset
@empty ($array)
arrayが空です
@endempty
Switch文
@switch, @case, @break, @default, @endswitch
があります。
@switch($i)
@case(0)
0です。
@break
@case(1)
1です。
@break
@default
でふぉるとです
@endswitch
繰り返し
@foreach, @endforeach, @for, @continue, @break
が使えます。
繰り返し構文の中では$loop変数が使えます。
@foreach ($books as $book)
@continue ($loop->first)
@if ($loop->last)
最後
@endif
{{ $book->title }}
@endforeach