[Laravel] Bladeテンプレートエンジン(1)埋め込み構文編
- 2020年4月17日
- 技術情報
PHPフレームワーク「Laravel」を使用する場合、Viewの作成は、Bladeテンプレートエンジンを使用することが一般的です。
Bladeテンプレートエンジンを使用することでHTMLへのPHPの埋め込みが簡単におこなえるようになります。
今回は、Bladeテンプレートで使用できる埋め込み構文を紹介したいと思います。
{{ $msg }} の使用方法
テンプレートを呼び出す際に設定するビュー変数:
'msg' => 'こんにちは'
Bladeテンプレートでの記述
{{ $msg }}
出力結果
こんにちは
{!! $msg !!} の使用方法
最初に紹介した「{{ $msg }}」との違いはエスケープをおこなうかどうかという点です。例えば、ビュー変数の中に画像を指定するHTMLのコードを記述した場合、「{{ $msg }}」の場合はエスケープされてHTMLのコードがそのまま出力されるのに対して、「{!! $msg !!}」の場合は、エスケープされずに画像が表示されます。以下の例で比較してください。
テンプレートを呼び出す際に設定するビュー変数:
'msg' => '<img src="/wp-content/themes/gigas/common/img/header_h1_gigas.png" title="GIGASロゴ" />'
Bladeテンプレートでの記述
{{ $msg }}
出力結果

Bladeテンプレートでの記述
{!! $msg !!}
出力結果

エスケープしない場合、ビュー変数に記述したコードが実行されます。
そのため、クロスサイトスクリプト等の脆弱性につながる恐れがあります。
使用する場合は、その値がユーザーが書き換え可能であるかどうか等を判断材料として注意する必要があります。
{{– –}} の使用方法
HTMLでコメントを記載する場合には以下のような<!ではじまるHTMLのコメントタグを使用することが一般的です。
しかしこのように記述したコメントはブラウザでHTMLソースを表示することでユーザーが見ることができてしまいます。
ユーザーに見せずに、コメントを残しておきたい場合、Bladeテンプレートの「{{– ここにコメントを記入する –}}」を使用することができます。
Bladeテンプレートでの記述
<!-- ここにHTMLコメントを入力します -->
{{-- ここにBladeコメントを入力します --}}
<!-- 次に再度にHTMLコメントを入力します -->
ブラウザでソースを表示した際の出力結果

Bladeコメントが表示されないことが確認できました。
次回はBladeテンプレートエンジンで使用できるディレクティブの説明をおこないたいと思います。
金曜日担当:nishida
nishida at 2020年04月17日 10:00:30