问题
I have a Symfony form that includes two TextType
fields. If a certain check evaluates to false
, I don't want to display the input
fields but output the static content of the field and include the form fields as hidden
fields instead. How can I do that?
回答1:
you can use HiddenType
,
or hide field in template:
{{ 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) }}
or you can use FormEvents like FormEvents::PRE_SET_DATA
in FormType.
(doc)
回答2:
You can prevent any output for the form field by pretending, that it was already rendered:
{{ form_start(form) }}
{% if someValue == true %}
{% do form.fieldName.setRendered() %}
{% endif %}
{{ form_end(form) }}
来源:https://stackoverflow.com/questions/35899195/how-to-hide-form-fields-in-twig-template