在树枝中将变量传递给 is_granted (Symfony)

Passing Variable to is_granted in twig (Symfony)

我在获取 twig 中的 is_granted 函数来测试变量时遇到了问题。在这种情况下,我正在测试当前用户是否被授予 form.roles 中包含的角色,但不幸的是 is_granted 测试将只接受一个字符串,并且传递一个变量总是返回 false。

                    <div class="form-group well">
            {{ form_label(form.roles) }}
            {% for role in form.roles %}
                {{ role.vars.value|trim }}{% if is_granted('{{ role.vars.value }}') %}
                <div class="row marketing ">
                    <div class="col-sm-6">
                        {{ form_label(role) }}
                    </div>
                    <div class="col-sm-6">
                        {{ form_widget(role, {"attr": {"class": "form-control"}} ) }}
                    </div>
                </div>
                {% endif %}
            {% endfor %}
        </div>

我试图过滤输出以确保它是一个字符串,但没有成功,并且 {% if is_granted('{{ role.vars.value }}') %} 中的引号如果不包括在内,则必须作为系统错误存在。

这段代码的输出是:

Allocated Roles ROLE_SYSTEM_ADMIN ROLE_REGISTRAR ROLE_ADMIN ROLE_PRINCIPAL ROLE_HEAD_TEACHER ROLE_TEACHER ROLE_STUDENT ROLE_PARENT ROLE_USER

知道如何让 is_granted 从给定的值进行测试吗?

您不应该打开新的 Twig 标签。 {{ ... }} 用于转储(回显),在这种情况下,您不想 echo/dump role.vars.value 的内容。所以将其更改为:{% if is_granted(role.vars.value) %}