Symfony/Twig 在 if 条件下设置变量
Posted
技术标签:
【中文标题】Symfony/Twig 在 if 条件下设置变量【英文标题】:Symfony/Twig Set variables in if condition 【发布时间】: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_SimpleFunction
或Twig_SimpleFilter
你能发布一个现实生活中的例子,没有“等等”,让你的问题更明显吗?
你可以去掉set部分,直接用<img src=" object.image.url ">
@mickdev 我知道,但我们大多有很长的结构,所以最后我会得到类似 entry->lnkSomeFieldName->first()->lnkCategory->first()->image->first()->getUrl()
的东西,如果我不这样分开的话,标题也一样
【参考方案1】:
不,没有办法在if
标记内声明变量。变量只能使用set
标签设置。
【讨论】:
太可惜了,谢谢。看来你是唯一懂我的人 @Anubarak 其他人试图解决 问题。但是,就像我说的,你不想解决问题,只想炫耀。并不是说我要为此责备你,但我想请你不要责怪那些试图提供帮助的人。 我不明白你是如何帮助我的……你只是说你不在乎,需要一个例子,但 Xabbuh 没有代码,对我的帮助最大。老实说,我真的不明白“其他人试图解决问题”的意思,我只是想知道它是否有语法。我感谢 DarkBee 的帮助,因为他试图为我创建一个解决方法。【参考方案2】:你可以使用(查看here以获得更多帮助):
% if object.image is defined or object.image is not null %
<img src=" image.url ">
% endif %
希望这会有所帮助!
【讨论】:
他的问题是如何减少代码量,而不是如何进一步扩展它 没错,我确实没有花时间完全理解这个问题!我太专注于如何找到答案。对不起... 看不到问题怎么能找到答案?以上是关于Symfony/Twig 在 if 条件下设置变量的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 2.8 Twig_Error_Runtime Sonata 管理包