🦁

LaravelのBladeで@ifで存在確認するときの注意

2023/06/26に公開

LaravelのBladeで「存在するなら表示、存在しないなら表示しない」という処理を書いたときの注意です。

例として「もし商品価格が存在するなら表示したい」場合を考えます。

OK1

商品価格が設定されていない場合nullを返す、という仕様だとします。

@if (is_null($price))
  {{ $price }}円
@endif

OK2(追記)

Laravelのディレクティブには色々と便利なものが事前定義されていて、それを使います。

https://laravel.com/docs/10.x/blade#if-statements

isset関数は、引数が未定義かnullであればfalseを返し、それ以外であればtrueを返します。

https://www.php.net/manual/ja/function.isset.php

これに直接アクセスするディレクティブが定義されています。

こっちのほうがシンプルでいいですね!

@isset($price)
  {{ $price }}円
@endisset

OK3(追記)

@issetがOKなら以下もOKなはずです。まあわざわざ書く必要はないかもしれませんが。

@if(isset($price))
  {{ $price }}円
@endif

NG(最初に書いていたコード)

以下のように書いてしまうと、$price=0の場合に「0円」と表示したいのにもかかわらず、表示されなくなってしまいます。

要件次第ですが、@if()でそのまま存在確認はしないほうが良いと思います。

@if ($price)
  {{ $price }}円
@endif
GitHubで編集を提案

Discussion