arrays - 检查数组 TWIG 中是否存在值

标签 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"中找到它.

我想要的是将 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) %}

关于arrays - 检查数组 TWIG 中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48009052/

相关文章:

javascript - 在数组内部分割一个字符串,然后将其从内部数组中取出,成为外部数组的一项

.net - 在 VB.NET 中对多维数组进行排序

python - Numpy 数组比较和索引

doctrine-orm - 如何从实体获取存储库?

json - Twig json_encode 空 json

java - 在 Java 中,为什么要将括号放在数组名称的前面?

symfony - 如何处理 symfony 2 中特定 Controller 的异常

url - Symfony2 Twig url() https

php - Symfony2 角色/组 - is_granted 未检测用户拥有的角色

Symfony 2 无法覆盖模板 FOSUserBundle