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