Laravel bladeテンプレート内での、if文などの使用方法の基本をまとめます。
デザイナーの方への連携用です
目次
環境
PHP 8.2.4
Laravel Framework 10.48.12
変数の表示
Bladeでは、変数を表示するために二重中括弧 {{ $変数名 }}
を使用します。
この形式は、XSS(クロスサイトスクリプティング)を防ぐためにエスケープされた出力を生成します。
<p>こんにちは, {{ $name }}</p>
value属性などに変数を設定する場合も同様に行えます。
<input type="text" name="user_name" value="{{ $name }}">
エスケープしないデータの表示(HTMLタグをそのまま表示したい場合)は、{{!! $変数名 !!}}
のように記述します。この方法を使用する際はXSS対策を十分に考慮する必要があります。
<p>こんにちは, {{!! $name !!}}</p>
if文
@if、@elseif、@else、@endif
ディレクティブを使用してif文を作成できます。
@if(!is_null( $name ))
<p>こんにちは、{{ $name }}</p>
@else
<p>nameがnullです<p>
@endif
for文
@for、@endfor
ディレクティブを使用して、指定回数の繰り返し処理を行えます。
@for ($i = 0; $i < 10; $i++)
<p>現在は {{ $i }}回目の繰り返し処理です</p>
@endfor
foreach文
配列やコレクションの要素を繰り返し処理する場合は、@foreach、@endforeach
ディレクティブを使用します。
<tbody>
@foreach ($car_list as $car)
<tr>
<td>{{ $car["model"] }}</td>
<td>{{ $car["price"] }}円</td>
<td>{{ $car["mileage"] }}km</td>
</tr>
@endforeach
</tbody>
$loop変数(ループ変数)
foreach
ループの反復処理中、ループの内部では$loop
変数を利用できます。この変数により、現在のループのインデックスや、ループの最初の反復なのか最後の反復なのか、といった便利な情報にアクセスすることができます。
現在のループのインデックスを0から始まる整数値として返します。
@foreach ($car_list as $car)
<p>{{ $loop->index }}</p>
@endforeach
■ $loop変数プロパティ
プロパティ | 説明 |
---|---|
$loop->index | 現在の反復のインデックス(初期値0) |
$loop->count | 反復している配列の総アイテム数 |
$loop->first | ループの最初の繰り返しか判定 |
$loop->last | Excelループの最後の繰り返しか判定 |
上記のプロパティなど便利なプロパティが他にもあります。
blade内にPHPコードの埋め込み
@php
ディレクティブを使用してblade内にプレーンなPHPブロックを記述できます。
@php
$name = "Bob";
@endphp
<p>こんにちは、{{ $name }}</p>
コメント
ビューにコメントを定義することも可能です。ただしHTMLのコメントとは異なり、Bladeのコメントは、HTMLには含まれません。
{{-- このコメントはHTMLの中には含まれません --}}
<!-- 通常のHTMLのコメントです -->
CSRFリクエストの防止
@csrf
は、Laravelフレームワークにおいて、CSRF(クロスサイトリクエストフォージェリ)攻撃から保護するための方法です。これはフォーム内に自動的にCSRFトークンを生成し、隠しフィールドとして埋め込みます.
<form method="POST">
@csrf
</form>
config()ヘルパー関数
config()ヘルパー関数を使用すると、アプリケーションのどこからでもconfigディレクトリ
に作成した設定値を呼び出すことが可能です。
configディレクトリに設定用ファイルを作成します。
<?php
return [
"config_str" => "設定ファイルで設定した文字列",
];
<p>設置値の呼び出し<p>
<p>設定値:{{config("config_sample.config_str")}}<p>