条件内执行语句

Execute statement inside conditional

是否可以在 Twig 条件语句中调用可执行函数?

我有一个路径函数,如果name变量为空,我想输出路径。现在我有这两个选择:

{% path file, 'reference' %} // calling path function
{{ file.name ?: file.path }} // Conditional

但我想要这样的东西:

{% file.name ?: path file, 'reference' %}

看起来 path 是一个标签而不是函数。如果它是一个函数,你会像这样使用它:

{% path(file, 'reference') %}

相比之下,Twig 有一个函数 dump,而在 Symfony 中你可以使用同名的标签。以下是您将如何使用它们:

{{ dump(foo) }} {# function #}
{% dump foo %}  {# tag #}

你看出区别了吗?

如果 path 是一个函数,这两个可能都是可能的:

{{ file.name ?: path(file, 'reference') }}
{% do file.name ?: path(file, 'reference') %}

两者是一样的,除了第二个不打印任何东西。

因为path好像是一个标签,我认为不可能按照你的要求去做。 (也有可能既是标签又是函数。如果是这种情况,请使用函数而不是标签。)

编辑: 你在使用 Symfony 吗? Symfony 中有 Twig function path,但我认为没有 Twig 标签 path。您确定您的代码 ({% path file, 'reference' %}) 正确吗?