将变量传递给twig中的is_granted(Symfony)

时间:2015-07-06 06:14:53

标签: php symfony twig

我无法在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(&#39; {{role.vars.value}}}&#39;)%}中的引号如果不包括系统错误,必须在那里。

此代码的输出为:

  

已分配的角色ROLE_SYSTEM_ADMIN ROLE_REGISTRAR ROLE_ADMIN ROLE_PRINCIPAL ROLE_HEAD_TEACHER ROLE_TEACHER ROLE_STUDENT ROLE_PARENT ROLE_USER

关于如何从给定的值中测试is_granted的任何想法?

1 个答案:

答案 0 :(得分:0)

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