检查数组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.role
但app.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中是否存在值的主要内容,如果未能解决你的问题,请参考以下文章