web-dev-qa-db-ja.com

twigテンプレートでフォームフィールドを非表示にする方法は?

2つの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)

7
b3da

フォームフィールドがすでにレンダリングされているふりをすることで、フォームフィールドの出力を防ぐことができます。

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