制御構文サービス注入Blade拡張イントロダクションBladeはシンプルながらパワフルなLaravelのテンプレートエンジンです。他の人気のあるPHPテンプレートエンジンとは異なり、ビューの中にPHPを直接記述することを許しています。全BladeビューはPHPへコンパイルされ、変更があるまでキャッシュされます。アプリケーションのオーバーヘッドは基本的に0です。Bladeビューには.blade.phpファイル拡張子を付け、通常はresources/viewsディレクトリーの中に設置します。テンプレートの継承レイアウト定義Bladeを使用する主な利点は、テンプレートの継承とセクションです。初めに簡単な例を見てください。通常ほとんどのアプリケーションでは、数多くのページを同じ全体的なレイアウトの中に表示するので、最初は"master"ページレイアウトを確認しましょう。レイアウトは一つのBladeビューとして、簡単に定義できます。&lt;/body&gt;&lt;/html&gt;ご覧の通り、典型的なHTMLマークアップで構成されたファイルです。@sectionや@yieldディレクティブに注目です。@sectionディレクティブは名前が示す通りにコンテンツのセクションを定義し、一方の@yieldディレクティブは指定したセションの内容を表示するために使用します。これでアプリケーションのレイアウトが定義できました。このレイアウトを継承する、子のページを定義しましょう。@extendsディレクティブを使用します。Bladeレイアウトを拡張するビューは、@sectionディレクティブを使用しレイアウトのセクションに内容を挿入します。前例にあるようにレイアウトでセクションを表示するには@yieldを使用します。&lt;p&gt;ここが本文のコンテンツ&lt;/p&gt;@endsectionこの例のsidebarセクションでは、レイアウトのサイドバーの内容をコンテンツに上書きするのではなく追加するために@@parentディレクティブを使用しています。@@parentディレクティブはビューをレンダーするときに、レイアウトの内容に置き換わります。生のPHPビューと同様、Bladeビューはグローバルなviewヘルパーを使用し、ルートから返すことができます。view(&#39;child&#39;);});データ表示Bladeビューに渡されたデータは、波括弧で変数を囲うことで表示できます。次のルートがあるとしましょう。&#39;Samantha&#39;]);});name変数の内容を表示しましょう。}}.もちろんビューに渡された変数の内容を表示するだけに限られません。PHP関数の結果をechoすることもできます。実際、どんなPHPコードもBladeのecho文の中に書けます。}}文は自動的にPHPのhtmlentities関数を通し、XSS攻撃を防ぎます。BladeとJavaScriptフレームワーク多くのJavaScriptフレームワークでも、与えられた式をブラウザに表示するために波括弧を使っていますので、@シンボルでBladeレンダリングエンジンに波括弧の展開をしないように指示することが可能です。}}.この例で、@記号はBladeにより削除されます。}}式はBladeエンジンにより変更されずにそのまま残り、JavaScriptフレームワークによりレンダリングできるようになります。変数をechoしたいが、その変数がセットされているかわからない場合もあるでしょう。複雑なPHPコードを使えば可能です。}}しかし三項演算子の代わりに、Bladeは便利な次の短縮形を提供しています。}}この例の場合、$name変数が存在すれば値が表示されます。存在していなければDefaultという言葉が表示されます。}}文はXSS攻撃を防ぐために、PHPのhtmlentities関数を自動的に通されます。データをエスケープしたくない場合は、以下の構文を使ってください。アプリケーションでユーザーの入力内容をechoする場合は注意が必要です。コンテンツは常に二重の波括弧の記法でHTMLエンティティにエスケープすべきです。制御構文テンプレートの継承とデータ表示に付け加え、Bladeは条件文やループなどの一般的なPHPの制御構文の便利な短縮形を提供しています。した短縮形はPHP制御構文のきれいで簡潔な記述を提供しつつも、対応するPHPの構文とそっくりです。If文if文の構文には、@if、@elseif、@else、@endifディレクティブを使用します。これらの使い方はPHPの構文と同じです。レコードが全くない!@endif利便性のため、Bladeでは@unlessディレクティブも提供しています。ログインしていません。@endunless繰り返し条件文に加え、BladeはPHPがサポートしている繰り返し構文も提供しています。これらも、対応するPHP構文と使い方は一緒です。&lt;p&gt;永久にループ中&lt;/p&gt;@endwhileサブビューの読み込みBladeの@includeディレクディブを使えば、ビューの中から簡単に他のBladeビューを取り込めます。取り込み元のビューで使用可能な変数は、取り込み先のビューでも利用可能です。&lt;/form&gt;&lt;/div&gt;親のビューの全データ変数が取り込み先のビューに継承されますが、追加のデータも配列で渡すことができます。Bladeビューの中では__DIR__や__FILE__を使わないでください。キャッシュされたビューのパスが返されるからです。コレクションのレンダービューBladeの@eachディレクティブを使い、ループとビューの読み込みを組み合わせられます。&#39;job&#39;)最初の引数は配列かコレクションの各要素をレンダーするための部分ビューです。第2引数は繰り返し処理する配列かコレクションで、第3引数はビューの中の繰り返し値が代入される変数名です。jobs配列を繰り返す場合なら、部分ビューの中で各ジョブにはjob変数としてアクセスしたいと通常は考えるでしょう。@eachディレクティブには第4引数を渡せます。この引数は配列が空の場合にレンダーされるビューを指定します。&#39;view.empty&#39;)コメントBladeでビューにコメントを書くこともできます。HTMLコメントと異なり、Bladeのコメントはアプリケーションから返されるHTMLには含まれません。--}}サービス注入@injectディレクティブはLaravelのサービスコンテナからサービスを取得するために使用できます。@injectの最初の引数はそのサービスを取り込む変数名で、第2引数は依存解決したいクラス/インターフェイス名です。}}.&lt;/div&gt;Blade拡張Bladeでは自分のカスタムディレクティブも定義することができます。directiveメソッドを使い、ディレクティブを登録します。Bladeコンパイラーがそのディレクティブを見つけると、引数に指定したコールバックが呼びだされます。次の例は@datetime($var)ディレクティブを作成し、渡された$varをフォーマットします。}}ご覧の通り、このディレクティブではLaravelのwithヘルパー関数が使われています。withヘルパーはシンプルに指定されたオブジェクト/値を返します。メソッドチェーンを行うのに便利です。このディレクティブにより最終的に生成されるコードは、次の通りです。kawase(Translation).。