Если ваш контроллер определяет все поля формы напрямую, вы можете просто добавить оператор if после определения основных полей, чтобы проверить, не является ли это обновлением до добавления поля video
, например.
$builder->add('tituloVideo')
->add('descripcionVideo')
->add('tagsVideo');
if($myMethod != 'update') {
$builder->add('video', 'file', array('required' => false));
}
Но если вы уже определили пользовательские form Collection of fields то поле определяется в вашем объекте Form Builder уже и вы только загрузку этой коллекции в контроллере, то в таком случае вы бы просто удалить его:
$form = $this->createForm(new MyCollectionType(), $entity);
if($myMethod == 'update') {
$form->remove('video');
}
Если это поле из соответствующего объекта, вы получаете объект первой и удалить его оттуда:
$form->get('myEntityName')->remove('myFieldName')
Примечание: Если вы человек вручную создавая шаблон формы, и вы просто пытаетесь скрыть его в своем шаблоне (например, установить внутри, если заявление), он не будет работать:
{% if $myMethod == 'update' %}
{{ form_row(form.video) }}
{% endif %}
Форма рендер будет просто добавить его в конце формы в любом случае (в моем опыте), так что не будет работать.
Самый простой способ - скрыть поле в шаблоне. Если вы действительно хотите это сделать, изучив саму себя, вам нужно добавить слушателя в вашу форму: http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html – Cerad
Хорошо, Cerad, благодарю вас за Ваш ответ. – cmaciasg
По моему опыту, если поле формы не определено в вашем шаблоне, средство визуализации формы просто добавит его по умолчанию в конце формы. Поэтому вы не можете просто «спрятать» его в шаблоне. Cerad знает в миллион раз больше о Symfony, чем я, поэтому я не уверен, что это то, что он предлагает или нет, но я не думаю, что это сработает. –