如何隐藏树枝模板中的表单字段?

How to hide form fields in twig template?

我有一个包含两个 TextType 字段的 Symfony 表单。如果某个检查的计算结果为 false,我不想显示 input 字段,而是输出该字段的静态内容并将表单字段包含为 hidden 字段。我该怎么做?

你可以使用 HiddenType, 或隐藏模板中的字段:

{{ form_start(form) }}
    {% if someValue == true %}
        {{ form_widget(form.fieldName) }}
    {% else %}
        {{ form_widget(form.fieldName, { 'attr': {'class': 'hidden-row'} }) }}
    {% endif %}
    {# other fields... #}
{{ form_end(form) }}

或者您可以在 FormType 中使用像 FormEvents::PRE_SET_DATA 这样的 FormEvents。 (doc)

您可以通过假装表单字段已经呈现来阻止任何输出:

{{ form_start(form) }}
    {% if someValue == true %}
        {% do form.fieldName.setRendered() %}
    {% endif %}
{{ form_end(form) }}