2016-12-25 2 views
0

- 私Laravelに新しいと私は私はこのような二重の中括弧内の変数をエコーすることができます知っている:エレガントな方法IFブレード内の文

<p>{{ $posts->id }}</p> 

は今、私の場合、私は時々含むフォームを持っていますURLのパラメータに応じて行を挿入するために変数$ posts(これはテーブルです)を更新し、時にはそれを含んでいません。

もちろん、投稿がない場合、 " - > id"の部分は失敗します。

<?php if ($posts) echo $posts["id"]; ?> 

ちょうどブレードエンジンを使用して: のように、ここでIF文迅速にするエレガントな方法はあります。

私はHTMLブロックの周りで@ifを使うことができると知っていますが、そのブロックを2回書く必要があります。

答えて

1

正確には$postsに依存します。

3進文を使用できます。例えば、$postsがコレクションまたは配列の場合、emptyを使用します。

{{ empty($posts) ? '' : $posts->id }} 

それだけで変数の場合は、or構文を使用することができますいくつかのケースではisset()

を使用します。PHP7で

{{ $posts or 'It is empty' }} 

することができます変数isset()があるかどうかを確認するには、??(ヌル統合オペレータ)を使用します。たとえば:

{{ $posts ?? $posts->id }} 

あなたはthe official documentation内の別の説明を(Echoing Data If It Exists部分を参照)を見ることができます。

+0

$ postsは私が信じているPost :: findOrFailの結果です。Postはデータベーステーブルを表すモデルです。 – Michael

+0

'findOrFail()'は、投稿が見つからなければ例外を返します。 'find()'または 'where() - > first()'を使い、 'null'を返します。この場合、3項演算子 '{{is_null($ post)? '':$ post-> id}} ' –

+0

' findOrFail() 'はjsonを返しません。オブジェクトを返します(または失敗した場合は例外をスローします) –

関連する問題