Laravel Bladeテンプレートで変数を設定する方法 質問する

Laravel Bladeテンプレートで変数を設定する方法 質問する

私は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

変数を定義します。

おすすめ記事