2016-03-09 7 views
3

У меня есть форма Symfony, которая включает в себя два поля TextType. Если определенная проверка оценивается как false, я не хочу отображать поля input, но выводить статическое содержимое поля и вместо этого включать поля формы как hidden. Как я могу это сделать?Как скрыть поля формы в шаблоне ветви?

ответ

6

вы можете использовать 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) }} 

или вы можете использовать FormEvents как FormEvents::PRE_SET_DATA в FormType. (doc)

+0

Я надеялся на какой-то переключатель в 'form_row', но я подозреваю, что это не реализовано в Symfony ... –

+0

@ GottliebNotschnabel на самом деле это :), я обновил свой ответ – b3da

+0

Нет, я имел в виду, что не скрывал его с помощью CSS, но предоставлял его как скрытое поле. Но я видел, что ваш второй подход позволяет это. Большое спасибо! –

2

Вы можете предотвратить выход для поля формы, делая вид, что это было уже вынесено:

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

Это приятно знать. Благодаря! –