目次
Bladeとは
Laravelのview作成にはHTMLではなくBladeが使用されます。ベースとなる書き方はHTMLですが、加えてBlade固有の色々な機能を使用することができます。
公式ドキュメントから下記引用
BladeはシンプルながらパワフルなLaravelのテンプレートエンジンです。他の人気のあるPHPテンプレートエンジンとは異なり、ビューの中にPHPを直接記述することを許しています。全BladeビューはPHPへコンパイルされ、変更があるまでキャッシュされます。つまりアプリケーションのオーバーヘッドは基本的に0です。Bladeビューには
.blade.php
ファイル拡張子を付け、通常はresources/views
ディレクトリの中に設置します。
つまり、テンプレート側にPHPを直接記述することができるLaravel独自の便利な機能ということですね。
(PHPで有名なのは、古いですがSmartyなどが挙げられるでしょう。)
ディレクティブとは
ディレクティブとは、Bladeで使用することができる、@から始まる範囲内で特定の処理を実行することができる記述方法です。
1 2 3 4 |
例) @include('layouts.footer') @include('layouts.header', ["banana" => 'yellow']) |
ディレクティブの利点は動的な部分のコードを比較的少ないコードで記述が可能となることです。
レイアウト作成用ディレクティブ
@section
@sectionの第一引数に文字列やHTMLタグを定義できます。
呼び出すときは@yieldディレクティブを使用できます。
1 2 3 4 5 6 7 8 |
例) @section('title', 'laratimes') @section('content') <div> {{ $hoge }} </div> @endsection |
@yield
@sectionディレクティブで定義した内容を展開します。
第二引数を付けると、埋め込み対象のsectionが未定義の場合に描画されます。
1 2 3 4 |
例) @yield('content') @yield('content', View::make('view.id')) |
@extends
継承する親レイアウトを子ビューに定義できます。
1 2 |
例) @extends('layouts.app') |
@component
コンポーネントの組み込みを行います。
1 2 |
@component('components.header') @endcomponent |
@slot
{{}}の間に指定された変数に値を設定します。
1 2 3 4 5 6 7 8 9 10 11 |
index @component('components.header') @slot('header_title') footer @endslot @slot('header_content') <li>aaa</li> <li>bbb</li> @endslot @endcomponent |
1 2 3 |
header <p>{{$header_title}}</p> <ul>{{$header_content}}</ul> |
※slotの詳しい動きについては端折り、書き方メインで書きています。
動きについて詳しく知りたい方はこちら
@include
読み込みたいbladeファイルを呼び出すことができます。
第二引数にbladeに渡したい値を配列で書くことも可能です。
1 2 3 4 |
例) @include('layouts.footer') @include('layouts.header', ["banana" => 'yellow']) |
@each
配列などから値を取り出し指定のテンプレートにはめ込んで出力することができます。
分岐処理を行うディレクティブ
@if
if文が記述できます。
1 2 3 4 5 6 |
例) @if("" === $hoge) //処理 @else //処理 @endif |
@unless
if文と逆の動きを行います。
1 2 3 4 5 6 |
例) @unless ($hoge) //処理 @else //処理 @endunless |
@empty
値が空か比較します。
1 2 3 4 5 6 |
例) @empty($hoge) //処理 @else //処理 @endempty |
@isset
値が存在するか比較します。
1 2 3 4 5 6 |
例) @isset($hoge) //処理 @else //処理 @endisset |
繰り返し処理を行うディレクティブ
@foreach
foreach文が記述できます。
1 2 3 4 |
例) @foreach($hogeas $key => $val) //処理 @endforeach |
@for
for文が記述できます。
1 2 3 4 |
例) @for($i = 0; $i < 10; $i++) //処理 @endfor |
@while
while文が記述できます。
1 2 3 4 5 6 7 |
例) @php $i = 0 @endphp @while($i < 10) //処理 @endwhile |
繰り返しのディレクティブに用意されている変数 $loop
bladeでは、$loopという繰り返し処理で使用できる特殊な変数が存在します。
「$loop->取り出したい値」とアクセスすることで、さま座ななプロパティにアクセスすることが可能となります。
ループ変数 | 役割 |
$loop->index | 現在のインデックス(0~) |
$loop->interation | 現在の繰り返し数(1~) |
$loop->remaining | 後何回繰り返すのか |
$loop->count | 繰り返しで使っている配列の要素数 |
$loop->first | 最初の繰り返しかどうか |
$loop->last | 最後の繰り返しかどうか |
$loop->depth | 繰り返しのネスト数 |
$loop->parent | ネストしている場合、親の繰り返しループ変数を示す |
その他のディレクティブ
@php
phpコードを直接記述することが可能です。
1 2 3 4 5 |
例) @php phpinfo(); echo "よっ!!"; @endphp |
@dd
laravelのddヘルパと同じです。
デバッグ時に使用します。
1 2 |
例) @dd($hoge) |
@dump
laravelのdumpヘルパと同じです。
デバック時に使用します。
1 2 |
例) @dump($hoge) |