Php 刀片式快速IF语句的优雅方式
我对Laravel不熟悉,我知道我可以在双花括号内回传变量,如下所示:Php 刀片式快速IF语句的优雅方式,php,laravel,if-statement,web,blade,Php,Laravel,If Statement,Web,Blade,我对Laravel不熟悉,我知道我可以在双花括号内回传变量,如下所示: <p>{{ $posts->id }}</p> {{$posts->id} 现在在我的例子中,我有一个表单,它有时包含要更新的变量$posts(顺便说一句,它是表),有时不包含根据URL中的参数插入行的变量$posts 当然,如果没有post,那么“->id”部分将失败。 这里是否有一种优雅的方式来快速陈述IF,比如: <?php if ($posts) echo $posts["id
<p>{{ $posts->id }}</p>
{{$posts->id}
现在在我的例子中,我有一个表单,它有时包含要更新的变量$posts(顺便说一句,它是表),有时不包含根据URL中的参数插入行的变量$posts
当然,如果没有post,那么“->id”部分将失败。
这里是否有一种优雅的方式来快速陈述IF,比如:
<?php if ($posts) echo $posts["id"]; ?>
但是仅仅使用刀片引擎
我知道我可以在HTML块中使用@if,但是我必须一直编写两次该块 这取决于什么是
$posts
可以使用三元语句。例如,如果$posts
是集合或数组,请使用empty
:
{{ empty($posts) ? '' : $posts->id }}
如果它只是变量,请使用isset()
在某些情况下,可以使用或语法:
{{ $posts or 'It is empty' }}
在PHP7中,您可以使用?
(空合并运算符)来检查变量isset()
。例如:
{{ $posts ?? $posts->id }}
您可以在中看到另一个解释(请参见回显数据(如果存在)。这取决于$posts
的确切含义
可以使用三元语句。例如,如果$posts
是集合或数组,请使用empty
:
{{ empty($posts) ? '' : $posts->id }}
如果它只是变量,请使用isset()
在某些情况下,可以使用或语法:
{{ $posts or 'It is empty' }}
在PHP7中,您可以使用?
(空合并运算符)来检查变量isset()
。例如:
{{ $posts ?? $posts->id }}
您可以在中看到另一种解释(请参见回显数据,如果它存在的话)。另一种更类似于laravel的方法是helper
与旧的
助手配合使用效果很好。另一种更像“拉拉维尔式”的方法是助手
与old
helper配合使用效果非常好。$posts是Post::findOrFail的结果,我认为它只是JSON,Post是我表示数据库表的模型。findOrFail()
如果找不到Post,则返回异常。改为使用find()
或where()->first()
,它将返回null
。在这种情况下,您将能够使用三元运算符{{is_null($post)'':$post->id}}
findOrFail()
不会返回json;它将返回一个对象(或在失败时抛出异常)$posts是Post::findOrFail的结果,我相信它只是JSON,Post是我表示数据库表的模型。findOrFail()。改为使用find()
或where()->first()
,它将返回null
。在这种情况下,您将能够使用三元运算符{{is_null($post)'':$post->id}}
findOrFail()
不会返回json;它将返回一个对象(或在失败时抛出异常)