Symfony/Twig 在 if 条件下设置变量

问题描述 投票:0回答:4

我知道这确实是微不足道的,也不是那么重要,但它可以节省我的一生...... 您知道可以在 PHP 中的 if 块中声明变量

if( $row = $sql->fetch ){
    //do something with the $row if $row = null this part is skipped
}

在 twig 中我不能这样做(设置 image = object.image,如果我的对象没有图像,则变量 image 变为 null 并且 if 语句不会变为 true

{% if image = object.image %}
    <img src="{{ image.getUrl() }}"> //and so on
{% endif %}

相反,我必须这样做(检查对象是否有图像,如果是,则将其保存到新变量并用它做一些事情)

{% if object.image %}
    {% set image = object.image %}
    <img src="{{ image.getUrl() }}"> //and so on
{% endif %}

当然,我知道这不是第一世界的问题,你可能认为我的问题毫无用处,但我必须每天多次写那些“更长”的陈述,这样我最终可以快几分钟。 那么是否有一种语法允许我在 if 块中设置变量而不是比较它们?

非常感谢

编辑
我和这个不一样我可以在 PHP if 条件中定义一个变量吗?只是在 twig 中

symfony twig
4个回答
8
投票

不,无法在

if
标签内声明变量。只能使用
set
标签设置变量。


6
投票

可以用三元运算符来设置。

{% set result =  condition ? "a": "b" %}


0
投票

根据条件设置变量是绝对可能的!

{% set variable = (condition == 1) ? 'this' : 'that' %}

可以根据

true
false
或其他变量来评估条件。


-1
投票

您可以使用(查看此处以获得更多帮助):

{% if object.image is defined or object.image is not null %}
   <img src="{{ image.url }}">
{% endif %}

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.