指定された値が設定されていない場合、デフォルト値を表示する最良の方法は何かを知りたいです。ブレードファイルには次のものがあります(キーが設定されていることを保証することはできません。多くの要因に依存します)。
{{ $foo['bar'] }}
次のことが最善の方法であるかどうかを知っています。
{{ (isset($foo['bar']) ? $foo['bar'] : 'baz' }}
またはこれを行うためのより良い方法はありますか?
ありがとう:)
PHPのnull合体演算子を使用します。
{{ $variable ?? "Default Message" }}
Laravel 5.7で削除
Laravel 4.1-5.6を使用すると、次のように簡単に実行できます。
{{ $variable or "Default Message" }}
以下と同じです:
echo isset($variable) ? $Variable : 'Default Message';
PHP 5.3の3項ショートカット構文は、Bladeテンプレートで機能します。
{{ $foo->bar ?: 'baz' }}
未定義のトップレベル変数では動作しませんが、配列やオブジェクトの欠損値の処理には最適です。
Laravel 5.7 {{$Variable or "Default Message"}}
スロー$Variable is not defined
。この {{$Variable ?? "Default Message"}}
でも動作します。
ビューで回避策を講じるのではなく、コントローラーでデフォルト値を設定することをお勧めします。
これは、ビューからロジックを排除し、ビューのマークアップをクリーンに保つため、最良の方法です。
たとえば、コントローラーで、ビューにデータを渡す前に
if(!isset($foo['bar'])){
$foo['bar'] = 'baz';
}
クリスBの答えは完全に有効ですが、おそらく、これは別の答えを得ることができる質問だと感じました。コントローラーを「太らせる」ことを望まない人もいますが、少なくともこの場合は、Presenterを使用することで、アプリケーションビューに大きな柔軟性があります。
Githubの次の project/package をご覧ください。このreadmeは、非常に堅牢であり、多くの例が用意されています。
それはあなたがちょうどあなたが頼んだことをし、単に呼ぶことを可能にする
{{ $foo['bar'] }}
あなたの意見で。