我在Symfony 4中使用EasyAdmin,我想在twig模板中设置一些字段为禁用true或false取决于用户角色。
例如
{{ dump(form.role.vars.disabled) }}
显示true
我想将其设置为false
{% block entity_form %}
{% set form.role.vars.disabled = false %}
{{ form(form) }}
{% endblock entity_form %}
但是我收到了错误
意外的令牌"标点符号"价值"。" ("声明块结束" 预期)。
此外,我尝试将其合并为数组但出现错误。
如何正确地做到这一点?
答案 0 :(得分:0)
您需要使用merge
filter来更新数组或散列值。您有一个深度嵌套的哈希,因此您需要多次使用merge
过滤器:
{% set form = form|merge({
role: form.role|merge({
vars: form.role.vars|merge({
disabled: false
})
})
}) %}
See TwigFiddle.(我使用{{ var ? 'true' : 'false' }}
代替{{ dump(var) }}
,因为TwigFiddle不支持dump
功能。)
<强>更新强>
上述代码在您的情况下不起作用,因为merge
过滤器将FormView
对象转换为数组。您需要创建一个Twig扩展来更改对象的属性。看看这个类似的问题:Set value of single object in multidimensional array in twig template
或者更好的方法可能是在控制器中(或者在配置表单的任何地方)执行此类操作,如@yceruto建议的那样。