Не использовать:
'data' => 'Default value'
Читать здесь: https://symfony.com/doc/current/reference/forms/types/form.html#data
"Параметр данных всегда переопределяет значение, полученное из доменаданные (объект) при рендеринге. Это означает, что значение объекта также переопределяется, когда форма редактирует уже сохраненный объект, что приводит к потере его постоянного значения при отправке формы. "
Используйте следующее:
Допустим, в этом примере у вас есть Entity Foo, и есть поле «active» (в этом примере это CheckBoxType, но процесс идентичен любому другому типу), которыйпо умолчанию вы хотите быть проверенным
В вашем классе FooFormType добавьте:
...
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
...
public function buildForm( FormBuilderInterface $builder, array $options )
{
...
$builder->add('active', CheckboxType::class, array(
'label' => 'Active',
));
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function(FormEvent $event){
$foo = $event->getData();
// Set Active to true (checked) if form is "create new" ($foo->active = null)
if(is_null($foo->getActive())) $foo->setActive(true);
}
);
}
public function configureOptions( OptionsResolver $resolver )
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle:Foo',
));
}