检查数组TWIG中是否存在值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查数组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"

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

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

答案

字符串看起来像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) %}
另一答案

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

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

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

以上是关于检查数组TWIG中是否存在值的主要内容,如果未能解决你的问题,请参考以下文章

检查实体字段类型是不是在 Twig 中返回值

渲染前检查模板是不是存在

php PHP检查另一个数组中是否存在所有数组值

如何检查一个值是不是存在于Ruby中的数组中

从Twig设置数组元素

如何快速检查对象数组中是不是存在属性值