检查数组TWIG中是否存在值

时间:2017-12-28 14:13:38

标签: arrays symfony twig

我从我的数据库加载了一个字符串,并从我的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"。{/ p>

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

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

2 个答案:

答案 0 :(得分: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) %}

答案 1 :(得分:0)

找到解决方案。不是最好的,但它有效。

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

现在它正在......