web-dev-qa-db-ja.com

値がブレードを設定しない場合にデフォルト値をエコーする方法

指定された値が設定されていない場合、デフォルト値を表示する最良の方法は何かを知りたいです。ブレードファイルには次のものがあります(キーが設定されていることを保証することはできません。多くの要因に依存します)。

{{ $foo['bar'] }}

次のことが最善の方法であるかどうかを知っています。

{{ (isset($foo['bar']) ? $foo['bar'] : 'baz' }}

またはこれを行うためのより良い方法はありますか?

ありがとう:)

42
paquettg

PHPのnull合体演算子を使用します。

{{ $variable ?? "Default Message" }}

Laravel 5.7で削除

Laravel 4.1-5.6を使用すると、次のように簡単に実行できます。

{{ $variable or "Default Message" }}

以下と同じです:

echo isset($variable) ? $Variable : 'Default Message'; 
109
Jazerix

PHP 5.3の3項ショートカット構文は、Bladeテンプレートで機能します。

{{ $foo->bar ?: 'baz' }}

未定義のトップレベル変数では動作しませんが、配列やオブジェクトの欠損値の処理には最適です。

14
joemaller

Laravel 5.7 {{$Variable or "Default Message"}}スロー$Variable is not defined。この {{$Variable ?? "Default Message"}}でも動作します。

10
Edmund Sulzanok

ビューで回避策を講じるのではなく、コントローラーでデフォルト値を設定することをお勧めします。

これは、ビューからロジックを排除し、ビューのマークアップをクリーンに保つため、最良の方法です。

たとえば、コントローラーで、ビューにデータを渡す前に

if(!isset($foo['bar'])){
     $foo['bar'] = 'baz';
}
4
Chris Bier

クリスBの答えは完全に有効ですが、おそらく、これは別の答えを得ることができる質問だと感じました。コントローラーを「太らせる」ことを望まない人もいますが、少なくともこの場合は、Presenterを使用することで、アプリケーションビューに大きな柔軟性があります。

Githubの次の project/package をご覧ください。このreadmeは、非常に堅牢であり、多くの例が用意されています。

それはあなたがちょうどあなたが頼んだことをし、単に呼ぶことを可能にする

{{ $foo['bar'] }}

あなたの意見で。

0
twmbx