Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 如果在细枝中为真,则有许多条件_Symfony_Twig - Fatal编程技术网

Symfony 如果在细枝中为真,则有许多条件

Symfony 如果在细枝中为真,则有许多条件,symfony,twig,Symfony,Twig,我有许多布尔类型的属性,因此如果为真,则显示是否则显示否。 我应该为每个属性设置一个条件“if”还是有其他简短的方法?您可以使用在twig中实现较短的if-语法 示例: # I'm creating an example array here {% set user = { 'active' : true } %} # Now, instead of ... User is {% if user.active %}active{% else %}inactive{% endif %}.

我有许多布尔类型的属性,因此如果为真,则显示否则显示。 我应该为每个属性设置一个条件“if”还是有其他简短的方法?

您可以使用在twig中实现较短的
if
-语法

示例

# I'm creating an example array here

{% set user = { 'active' : true } %}

# Now, instead of ...

User is {% if user.active %}active{% else %}inactive{% endif %}.

# ... you can write:

User is {{ user.active ? 'active' : 'inactive' }}.
输出

# I'm creating an example array here

{% set user = { 'active' : true } %}

# Now, instead of ...

User is {% if user.active %}active{% else %}inactive{% endif %}.

# ... you can write:

User is {{ user.active ? 'active' : 'inactive' }}.
用户处于活动状态

我建议,

看起来像

class YourProjectTwigExtension extends Twig_Extension
{
    public function getFilters()
    {
        return array(
            new Twig_SimpleFilter('booleanToString', array($this, 'booleanToString')),
        );
    }

    public function booleanToString($value)
    {
        if (!$value) {
            return "No";
        }

        return "Yes";
    }
看一看,

这样你就可以简单地

{{ yourVariable.yourBooleanAttribute|booleanToString }} {# which shows "Yes" or "No" #}
更新:


对于这一特殊需求,我建议nifr提出建议。但我会保留这个答案,因为它可能有助于您在模板中应用其他特定逻辑。

在这种情况下,是否可以使用twig扩展来执行服务?Hm不是创建twig扩展-编写类,将其注册为服务,使用twig.extension标记它,并对其进行进一步测试。。。这么简单的操作有点过分吗?细枝宏。。。也许:)如果你需要不同的输出。。。比如是/否,主动/非主动,酷/不酷?我认为在这种情况下不值得这么做。我一直在开发真正需要扩展细枝的应用程序。“编写一个类,将其注册为服务,用twig.extension标记它”只需完成一次,然后允许您管理所需的所有过滤器/函数。所以,我同意你的观点,只是为了满足这个特殊的需要而扩展树枝(上面的问题)。但是,比方说,您已经扩展了细枝,添加适当的过滤器并不是那么乏味。