私はLaravel Bladeを読んでいますドキュメンテーション後で使用するためにテンプレート内で変数を割り当てる方法がわかりません。{{ $old_section = "whatever" }}
これを行うと「何でも」がエコーされてしまうので、それを望んでいません。
できることは理解しています<?php $old_section = "whatever"; ?>
が、それはエレガントではありません。
Blade テンプレートでこれを実行するより優れたエレガントな方法はありますか?
ベストアンサー1
簡単な方法
複数の変数を定義する場合は、ブレード ディレクティブの完全な形式を使用します。
@php
$i = 1;
$j = 2;
@endphp
1 つの変数のみを定義する場合は、単一の PHP ステートメントを使用することもできます。
@php($i = 1)
さらに高度な機能: 「定義」タグを追加する
カスタム タグを使用し、@php の代わりに @define を使用する場合は、次のように Blade を拡張します。
/*
|--------------------------------------------------------------------------
| Extend blade so we can define a variable
| <code>
| @define $variable = "whatever"
| </code>
|--------------------------------------------------------------------------
*/
\Blade::extend(function($value) {
return preg_replace('/\@define(.+)/', '<?php ${1}; ?>', $value);
});
次に、次のいずれかを実行します。
簡単な解決策: 面倒な場合は、AppServiceProvider.php の boot() 関数にコードを追加するだけです。
より良い解決策:独自のサービスプロバイダーを作成します。https://stackoverflow.com/a/28641054/2169147Laravel 5 でブレードを拡張する方法について。この方法では少し手間がかかりますが、プロバイダーの使用方法を学ぶ良い練習になります :)
上記の変更後、以下を使用できます。
@define $i = 1
変数を定義します。