PHPフレームワーク「Laravel」でビューにテンプレート(Blade)を使用する
PHPフレームワーク「Laravel」の使い方を調べています。PHPフレームワーク「Laravel」でコントローラーを使用する
今回は、テンプレートエンジン「Blade」の使い方を調べてみます。
http://laravel.com/docs/templates
Bladeテンプレートの呼び出し
Bladeテンプレートであるかは、viewに保存したphpファイルの
拡張子で判断されます。
「.blade.php」
という拡張子でviewディレクトリにファイルを保存しておけば
Bladeで記載されていると判定されます。
拡張子が「.php」だけだとBladeという判定が行われず
キーワードがそのまま表示されてしまいます。
変数を表示する
プログラムから送った変数を表示するには、
{{{ $name }}}
このように、「{}」を3つ重ね、変数名を記載します。
{{{ time() }}}
このように、関数呼び出しも可能です。
app/routes.phpファイルはこのようになりました。
- <?php
- // app/routes.php
- Route::get('/', function() {
- return View::make('sample', array('name' => 'Symfo'));
- });
呼び出されるテンプレート
「app/views/tsample.blade.php」
はこのようになります。
- <!-- app/views/sample.blade.php で保存 -->
- <html>
- <body>
- <h1>こんにちは、{{{ $name }}}</h1>
- 只今のUNIXタイムスタンプは: {{{ time() }}}
- </body>
- </html>
狙い通り表示されました。
データが存在しない場合はデフォルト値表示
変数にデータがセットされていなければ、デフォルト値を表示したい場合、
「or」を使用すれば良いようです。
- <!-- app/views/sample.blade.php で保存 -->
- <html>
- <body>
- <h1>こんにちは、{{{ $name or 'Default' }}}</h1>
- {{{ $address or '住所は設定されていません。' }}}
- </body>
- </html>
波括弧そのものを出力する
波括弧のエスケープは、「@」をつければOK。
- <!-- app/views/sample.blade.php で保存 -->
- <html>
- <body>
- <h1>こんにちは、{{{ $name }}}</h1>
- @{{ ここは波括弧が表示されます。 }}
- </body>
- </html>
波括弧が2つと3つの違い
波括弧2つでくくった場合と3つでくくった場合の違いは
データをhtmlエスケープするか否かです。
- <!-- app/views/tsample.blade.php で保存 -->
- <html>
- <body>
- <h1>こんにちは、{{{ $name }}}</h1>
- {{ '<div style="color:red">波括弧2つ</div>' }}
- {{{ '<div style="color:red">波括弧3つ</div>' }}}
- </body>
- </html>
波括弧2はそのまま、波括弧3つはhtmlエスケープして出力されます。
if文
条件分岐を行いたい場合、if文が使用できます。
記載方法は「@if」「@elseif」「@else」「@endif」
- <?php
- // app/routes.php
- Route::get('/{count}', function($count) {
- return View::make('sample', array('count' => $count));
- });
- <!-- app/views/tsample.blade.php で保存 -->
- <html>
- <body>
- @if ($count === 1)
- countは1です。
- @elseif (1 < $count)
- countは1より大きいです。
- @else
- countは0以下です。
- @endif
- </body>
- </html>
unless
変数の値の存在チェックであれば、@unlessが使えます。
- <?php
- // app/routes.php
- Route::get('/', function() {
- return View::make('sample', array('user' => false));
- });
- <!-- app/views/tsample.blade.php で保存 -->
- <html>
- <body>
- @unless ($user)
- $userが存在しません。
- @else
- $userは存在します。
- @endunless
- </body>
- </html>
forループ
「@for」「@endfor」でforループが記載できます。
- <!-- app/views/tsample.blade.php で保存 -->
- <html>
- <body>
- @for ($i = 0; $i < 10; $i++)
- {{ $i }}<br>
- @endfor
- </body>
- </html>
foreachループ
「@foreach」「@endforeach」でforeachループが記載できます。
- <?php
- // app/routes.php
- Route::get('/', function() {
- $fruitsList = array('りんご', 'ばなな', 'ぶどう');
- return View::make('sample', array('fruitsList' => $fruitsList));
- });
- <!-- app/views/tsample.blade.php で保存 -->
- <html>
- <body>
- @foreach ($fruitsList as $fruits)
- {{ $fruits }}<br>
- @endforeach
- </body>
- </html>
- 関連記事
-
- PHPでarrayの内容を文字列で取得する(var_export)
- PHPフレームワーク「Laravel」でFormタグを生成する
- PHPフレームワーク「Laravel」でビューにテンプレート(Blade)を使用する
- PHPフレームワーク「Laravel」でコントローラーを使用する
- PHPフレームワーク「Laravel」でプログラムエラーの表示
コメント