首页 文章

在树枝模板中的表单字段中设置值(EasyAdmin)

提问于
浏览
1

我在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 回答

  • 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 函数 . )

    Update:

    上面的代码在您的情况下不起作用,因为 merge 过滤器将 FormView 对象转换为数组 . 您需要创建一个Twig扩展来更改对象的属性 . 看看这个类似的问题:Set value of single object in multidimensional array in twig template

    或者更好的方法可能是在控制器中(或者在配置表单的任何地方)执行此类操作,如@yceruto建议的那样 .

相关问题