Symfoware

Symfowareについての考察blog

PHPフレームワーク「Laravel」でビューにテンプレート(Blade)を使用する

PHPフレームワーク「Laravel」の使い方を調べています。
PHPフレームワーク「Laravel」でコントローラーを使用する

今回は、テンプレートエンジン「Blade」の使い方を調べてみます。
http://laravel.com/docs/templates


Bladeテンプレートの呼び出し



Bladeテンプレートであるかは、viewに保存したphpファイルの
拡張子で判断されます。

「.blade.php」

という拡張子でviewディレクトリにファイルを保存しておけば
Bladeで記載されていると判定されます。

拡張子が「.php」だけだとBladeという判定が行われず
キーワードがそのまま表示されてしまいます。

453_01.png




変数を表示する



プログラムから送った変数を表示するには、


{{{ $name }}}



このように、「{}」を3つ重ね、変数名を記載します。



{{{ time() }}}



このように、関数呼び出しも可能です。

app/routes.phpファイルはこのようになりました。


  1. <?php
  2. // app/routes.php
  3. Route::get('/', function() {
  4.     
  5.     return View::make('sample', array('name' => 'Symfo'));
  6. });




呼び出されるテンプレート
「app/views/tsample.blade.php」
はこのようになります。


  1. <!-- app/views/sample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         <h1>こんにちは、{{{ $name }}}</h1>
  5.         只今のUNIXタイムスタンプは: {{{ time() }}}
  6.     </body>
  7. </html>




狙い通り表示されました。

453_02.png





データが存在しない場合はデフォルト値表示



変数にデータがセットされていなければ、デフォルト値を表示したい場合、
「or」を使用すれば良いようです。


  1. <!-- app/views/sample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         <h1>こんにちは、{{{ $name or 'Default' }}}</h1>
  5.         {{{ $address or '住所は設定されていません。' }}}
  6.     </body>
  7. </html>




453_03.png






波括弧そのものを出力する



波括弧のエスケープは、「@」をつければOK。


  1. <!-- app/views/sample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         <h1>こんにちは、{{{ $name }}}</h1>
  5.         @{{ ここは波括弧が表示されます。 }}
  6.     </body>
  7. </html>




453_04.png






波括弧が2つと3つの違い



波括弧2つでくくった場合と3つでくくった場合の違いは
データをhtmlエスケープするか否かです。


  1. <!-- app/views/tsample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         <h1>こんにちは、{{{ $name }}}</h1>
  5.         {{ '<div style="color:red">波括弧2つ</div>' }}
  6.         {{{ '<div style="color:red">波括弧3つ</div>' }}}
  7.     </body>
  8. </html>




波括弧2はそのまま、波括弧3つはhtmlエスケープして出力されます。

453_05.png





if文



条件分岐を行いたい場合、if文が使用できます。
記載方法は「@if」「@elseif」「@else」「@endif」


  1. <?php
  2. // app/routes.php
  3. Route::get('/{count}', function($count) {
  4.     
  5.     return View::make('sample', array('count' => $count));
  6. });





  1. <!-- app/views/tsample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         @if ($count === 1)
  5.             count1です。
  6.         
  7.         @elseif (1 < $count)
  8.             count1より大きいです。
  9.         
  10.         @else
  11.             count0以下です。
  12.             
  13.         @endif
  14.     </body>
  15. </html>




453_06.png

453_07.png

453_08.png





unless



変数の値の存在チェックであれば、@unlessが使えます。


  1. <?php
  2. // app/routes.php
  3. Route::get('/', function() {
  4.     
  5.     return View::make('sample', array('user' => false));
  6. });





  1. <!-- app/views/tsample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         @unless ($user)
  5.             $userが存在しません。
  6.         @else
  7.             $userは存在します。
  8.         @endunless
  9.     </body>
  10. </html>



453_09.png






forループ



「@for」「@endfor」でforループが記載できます。


  1. <!-- app/views/tsample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         @for ($i = 0; $i < 10; $i++)
  5.             {{ $i }}<br>
  6.         @endfor
  7.     </body>
  8. </html>



453_10.png






foreachループ



「@foreach」「@endforeach」でforeachループが記載できます。


  1. <?php
  2. // app/routes.php
  3. Route::get('/', function() {
  4.     
  5.     $fruitsList = array('りんご', 'ばなな', 'ぶどう');
  6.     return View::make('sample', array('fruitsList' => $fruitsList));
  7. });





  1. <!-- app/views/tsample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         @foreach ($fruitsList as $fruits)
  5.             {{ $fruits }}<br>
  6.         @endforeach
  7.     </body>
  8. </html>




453_11.png

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/08/17(日) 17:49:46|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PHPフレームワーク「Laravel」でFormタグを生成する | ホーム | PHPフレームワーク「Laravel」でコントローラーを使用する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1466-6764b122
この記事にトラックバックする(FC2ブログユーザー)