Лучший способ для сущностей / объектов - установить опцию по умолчанию для самого класса объектов, либо в самой сущности, либо перед созданием формы, либо с использованием какого-либо компоновщика / фабрики.
// let say thisis the class which will be filled with the natinalite
Class Person {
private $name
// ... some other fields ...
private $nationalite
public function setNationalite(Nationalite $nationale)
{
$this->nationalite = $nationalite
}
}
Метод создания объекта формы
$person = new Person();
$person->setNationalite($repo->getNationaliteParDefaut());
// lets say personType is your form, that also has field nationalite
$form = $this->createForm(PersonType:class, $person);
При такой настройке форма будет предварительно заполнена данными по умолчанию из объекта, включая национал, и пользователь все равно сможет легко его изменить.
Необъектный метод Еще один способ сделать то, что вам нужно, - использовать события формы.
// in your form definition
$builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event) {
$form = $event->getForm();
$data = $event->getData();
$form->add('nationalite', EntityType::class, array(
'class' => 'AppBundle:Nationalite',
'choice_label' => 'libelle',
'required' => false,
'data' => $repo->getNationaliteParDefaut()
)
}
О empty_data
Пустые данные работают только в том случае, если поле формыпусто, напримерпользователь ничего не выбрал, поэтому будет использоваться значение из пустых данных ref: https://symfony.com/doc/current/reference/forms/types/text.html#empty-data