【问题标题】:Symfony/Twig Set variables in if conditionSymfony/Twig 在 if 条件下设置变量
【发布时间】:2017-08-04 13:21:49
【问题描述】:

我知道这真的很微不足道,并不那么重要,但它可以为我节省一些生命...... 你知道你可以在 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 块中设置变量而不是比较它们?

非常感谢

编辑
我不喜欢这个Can I define a variable in a PHP if condition? 只是在树枝上

【问题讨论】:

  • 如果你有很多相同的代码,你应该考虑使用包含/宏的/扩展树枝Twig_SimpleFunctionTwig_SimpleFilter
  • 你能发布一个现实生活中的例子,没有“等等”,让你的问题更明显吗?
  • 你可以去掉set部分,直接用&lt;img src="{{ object.image.url }}"&gt;
  • @mickdev 我知道,但我们大多有很长的结构,所以最后我会得到类似 entry-&gt;lnkSomeFieldName-&gt;first()-&gt;lnkCategory-&gt;first()-&gt;image-&gt;first()-&gt;getUrl() 的东西,如果我不这样分开的话,标题也一样

标签: symfony twig


【解决方案1】:

不,没有办法在if 标记内声明变量。变量只能使用set 标签设置。

【讨论】:

  • 太可惜了,谢谢。看来你是唯一懂我的人
  • @Anubarak 其他人试图解决 问题。但是,就像我说的,你不想解决问题,只想炫耀。并不是说我要为此责备你,但我想请你不要责怪那些试图提供帮助的人。
  • 我不明白你是如何帮助我的……你只是说你不在乎,需要一个例子,但 Xabbuh 没有代码,对我的帮助最大。老实说,我真的不明白“其他人试图解决问题”的意思,我只是想知道它是否有语法。我感谢 DarkBee 的帮助,因为他试图为我创建一个解决方法。
【解决方案2】:

你可以使用(查看here以获得更多帮助):

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

希望这会有所帮助!

【讨论】:

  • 他的问题是如何减少代码量,而不是如何进一步扩展它
  • 没错,我确实没有花时间完全理解这个问题!我太专注于如何找到答案。对不起...
  • 看不到问题怎么能找到答案?
猜你喜欢
  • 2021-03-07
  • 1970-01-01
  • 2020-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多