🦁
LaravelのBladeで@ifで存在確認するときの注意
LaravelのBladeで「存在するなら表示、存在しないなら表示しない」という処理を書いたときの注意です。
例として「もし商品価格が存在するなら表示したい」場合を考えます。
OK1
商品価格が設定されていない場合null
を返す、という仕様だとします。
@if (is_null($price))
{{ $price }}円
@endif
OK2(追記)
Laravelのディレクティブには色々と便利なものが事前定義されていて、それを使います。
isset
関数は、引数が未定義かnull
であればfalse
を返し、それ以外であればtrue
を返します。
これに直接アクセスするディレクティブが定義されています。
こっちのほうがシンプルでいいですね!
@isset($price)
{{ $price }}円
@endisset
OK3(追記)
@isset
がOKなら以下もOKなはずです。まあわざわざ書く必要はないかもしれませんが。
@if(isset($price))
{{ $price }}円
@endif
NG(最初に書いていたコード)
以下のように書いてしまうと、$price=0
の場合に「0円」と表示したいのにもかかわらず、表示されなくなってしまいます。
要件次第ですが、@if()
でそのまま存在確認はしないほうが良いと思います。
@if ($price)
{{ $price }}円
@endif
Discussion