2016-12-25 16 views
0

I'm新Laravel,我知道我可以附和双大括号中的变量是这样的:优雅的方式,如果在刀片声明

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

现在,在我来说,我有,有时含有一种形式根据URL中的参数,变量$ posts(顺便提一下)是更新的,有时不包含它来插入一行。

当然,如果没有帖子,那么零件“ - > ID”将失败。 有一种优雅的方式来进行快速IF语句这里,如:

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

只是使用刀片引擎。

我知道我可以在HTML块中使用@if,但是我必须一直写两次该块。

回答

1

这取决于究竟是什么$posts

您可以使用三元语句。例如,如果$posts是集合或数组,使用empty

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

如果只是变量,使用isset()

在某些情况下可以使用or语法:

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

在PHP7可以使用??(空合并运算符)来检查变量isset()。例如:

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

你可以看到the official documentation另一种解释(见Echoing Data If It Exists部分)。

+0

$ posts是Post :: findOrFail的结果,我相信它只是JSON,Post是我的模型,代表数据库表。 – Michael

+0

'findOrFail()'如果找不到帖子,则返回一个异常。使用'find()'或'where() - > first()'代替返回'null'。在这种情况下,你可以使用三元运算符'{{is_null($ post)? '':$ post-> id}}' –

+0

'findOrFail()'不会返回json;它会返回一个对象(或者在失败时抛出异常) –