英語は母国語ではありません。申し訳ありません。フォームイベントのformModifierでエンティティが空です。
私は会議エンティティ(rendezVous)を持っていますが、このエンティティでは、エンティティdoctor(docteur)とcustomer(client)の2つがマッピングされています。
お客様を選ぶ際に医師のリストを変更したいと考えています。
私はRendezVousTypeにフォームイベントを作成しますが、問題は私が顧客を選択すると、Clientエンティティが私のformModifierで空です。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('client', EntityType::class, array(
'class' => 'AppBundle:Client',
'placeholder' => '',
));
$formModifier = function (FormInterface $form, Client $client = null) {
$idEspece = null === $client ? 0 : $client->getId();
$form->add('docteur', EntityType::class, array(
'class' => 'AppBundle:Docteur',
'placeholder' => '',
'query_builder' => function (DocteurRepository $er) use ($idEspece) {
return $er->getByClientEspece($idEspece);
},
));
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
$data = $event->getData();
$formModifier($event->getForm(), $data->getClient());
}
);
$builder->get('client')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$client = $event->getForm()->getData();
$formModifier($event->getForm()->getParent(), $client);
}
);
}
$ idEspeceのデフォルト値を設定すると、クエリビルダは正しいリストを返します。