LoginSignup
2
1

More than 3 years have passed since last update.

Laravel blade基本

Posted at

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);
}
foge/fuga.blade.php
{{ $hoge }}
結果
fuga

また、phpのcompact関数を使うことで簡単に変数を渡すことができます。

コントローラーのアクションメソッド
public function index() {
    $hoge = 'fuga';
    return view('hoge.fuga', compact('hoge'));
}

viewファイルで変数を使う

viewヘルパー関数で渡された変数には マスタッシュ構文 {{ }}内で使用可能です。

viewファイル
{{ $hoge }}

マスタッシュ構文では変数展開時にXSS対策のため自動でHTMLエスケープが実行されます(=タグがそのまま文字列として表示される)。
動的にhtmlを作成したい場合にエスケープを無効にしたい場合は、代わりに{!! !!}を使用してください。(中括弧は一つでok)

viewファイル
{!! $hoge !!}

viewファイル内で{{ }}をそのまま使いたい場合は先頭に@をつけてください。変数展開されず出力されます。

viewファイル
@{{ $hoge }}

viewファイルでコメントを記述する

htmlのコメント(<!-- comment -->)をそのまま記述することも可能ですが、htmlファイルとして出力されるのでユーザーから見えてしまいます。
bladeテンプレート内でのみ残るコメントにする場合は {{-- comment --}}を使います。

ディレクティブ制御構文

bladeテンプレートにはview制御を行うifやforeachが使えるディレクティブ構文が使えます。
ディレクティブ構文内では変数が使えます。
ディレクティブ構文には先頭に@を付けます。

if文

@if, @elseif, @else, @endif, @unless, @isset, @empty があります。

viewファイル
@if ($isActive)
アクティブ
@else
非アクティブ
@endif
viewファイル
@unless ($isActive)
@endunless

```lang:viewファイル
@isset ($fuga)
fugaが定義されていない
@endisset
viewファイル
@empty ($array)
arrayが空です
@endempty

Switch文

@switch, @case, @break, @default, @endswitchがあります。

viewファイル
@switch($i)
    @case(0)
        0です。
        @break
    @case(1)
        1です。
        @break
    @default
        でふぉるとです
@endswitch

繰り返し

@foreach, @endforeach, @for, @continue, @break が使えます。
繰り返し構文の中では$loop変数が使えます。

viewファイル
@foreach ($books as $book)
 @continue ($loop->first)

 @if ($loop->last)
   最後
 @endif

 {{ $book->title }}
@endforeach
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1