检查数组TWIG中是否存在值

问题描述 投票:2回答:2

我有一个从我的数据库加载的字符串,以及来自我的config.yml的全局变量。我想检查变量是否是下面给出的数组的一部分:

app.user.role ='["1","2","3","4","5","6","7","8","9","10","11"]'

我无法改变这一点。它必须看起来像这样。

我这样检查:{% if VARIABLE in app.user.role %}

全球VARIABLE是一个整数(我不能改变它)

但是,例如VARIABLE = 1我的陈述返回true,因为在app.user.role我们可以找到四个1(在"1","10","11"),但我想在"1"找到它而不是在"10","11"

我想要的是将app.user.role转换为数组或找到另一种方法来检查变量是否是我的伪数组的元素。

我试图迭代for循环,但app.user.roleapp.user.role不是一个数组(实际上它是,但有一个值["1","2","3","4","5","6","7","8","9","10","11"])。

arrays symfony twig
2个回答
3
投票

字符串看起来像JSON。您可以创建一个Twig Extension类并在那里注册一个只返回in_array的函数:

<?php

class MyExtension extends Twig_Extension
{
    public function getFunctions()
    {
        return [
            new Twig_SimpleFunction(
                'inarray',
                [$this, 'inArray']
            ),
        ];
    }

    /**
     * @param int $variable
     * @param string $appUserRole
     *
     * @return bool
     */
    public function inArray(int $variable, string $appUserRole): bool
    {
        return in_array($variable, json_decode($appUserRole));
    }
}

然后在模板中:

{% if inarray(VARIABLE, app.user.role) %}

0
投票

找到了解决方案。不是最好的,但它的工作原理。

{% set check = '"'~VARIABLE~'"' %}
{% if check in app.user.role %}

现在它正在运作......

© www.soinside.com 2019 - 2024. All rights reserved.