В моей форме, у меня есть поле типа EntityClass
:Как предварительного заполнения поля типа EntityType из PHP
$builder
->add(
'user',
EntityType::class,
[
'required' => false,
'label' => 'User',
'placeholder' => 'Please choose',
'choice_label' => 'email',
'choice_value' => 'id',
'class' => 'AppBundle:User',
]
)
;
Это поле работает отлично - пока я не пытаюсь его предварительного заполнения из моего PHP кода. Затем он остается пустым и показывает только «Пожалуйста, выберите».
Предварительное заполнение выглядит следующим образом:
$user = $this->userRepository->find(...);
$form->get('user')->setData($user);
Но это также не работает, если я называю ->setData($user->getId())
, или даже ->setData($user->getEmail())
.
Итак, как мне заполнить поле типа EntityType
?
Когда и где вы задаете данные? – DonCallisto
Более того, это «основная форма» (так, когда вы вызываете строителя) привязаны к сущности или нет? – DonCallisto
@DonCallisto Форма не привязана к сущности и заполняется службой, вызываемой в контроллере, когда '$ form-> isSubmitted()' возвращает 'false'. (не может привязывать его к объекту из-за наличия отношения к сущности, которая использует наследование). – Jost