gpt4 book ai didi

symfony - Twig 有什么方法可以确定方法/参数是否存在而不用到处放置 if 吗?

转载 作者:行者123 更新时间:2023-12-02 18:45:49 24 4
gpt4 key购买 nike

当Symfony2和Twig一起使用时,如果需要这样做:

<td>{{ myObject.method.parameter }}</td>

或者只是

<td>{{ myObject.parameter }}</td>

如果 twig 文件尝试访问的内容未设置,则会抛出错误。除了到处写这个之外,是否有更干净的方法来防止这种情况:

<td>{% if myObject.method.parameter is defined %}{{ myObject.method.parameter }}{% endif %}</td>

最近与 Angular 合作很愉快,因为它似乎并不关心。

最佳答案

一个纯粹的 Twig 解决方案是使用 default 过滤器:

http://twig.sensiolabs.org/doc/filters/default.html

它看起来像这样,对我来说效果很好:

{{ myObject.it.is.not.designed|default('it is not defined') }}  

默认文本可以是空字符串''

现在您必须为每个变量设置默认值。与 {% autoescape %} 不同,似乎无法为较大的代码区域定义过滤器。为了简单起见,我将创建一个宏:

{% macro safeEcho(value) %}
{{ value | default('') }}
{% endmacro %}

不要忘记导入:

{% import _self as helper %}

测试:

Test:{{ helper.safeEcho(echolabels.something.something_2) }}

如果我经常使用它,我会考虑短名称,尽管我通常不使用缩写:h.se()

有关宏的更多信息:

http://twig.sensiolabs.org/doc/tags/macro.html

如果您从根本上需要这个,可能会覆盖 Twig 词法分析器:

http://twig.sensiolabs.org/doc/internals.html

我不太了解 Twig 作为 Symfony2 的一部分。它的配置可能提供了另一种选择:

http://symfony.com/doc/current/reference/configuration/twig.html

最后,请参阅此处,之前曾提出过此问题,但有不同的答案。

How to check for null in Twig?

symfony, twig - default filter for all variables in template

也许 Twig 开发人员应该考虑提供“通用变量默认值”选项:-)

关于symfony - Twig 有什么方法可以确定方法/参数是否存在而不用到处放置 if 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29155809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com