Счет-фактура объекта имеет отношение один-ко-многим с объектом
Код: Выделить всё
Session. Итак, мой класс формы имеет элемент EntityTypeКод: Выделить всё
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('invoice_date', DateType::class, ['widget'=>'single_text',])
->add('payer',HiddenType::class)
->add('sessions',null, [
// this does not solve N+1
/*'query_builder'=>function(SessionRepository $repository)
{return $repository->createQueryBuilder('s')->leftJoin('s.invoice','invoice')
->join('s.patients','patients')
->leftJoin('patients.payer','payer')
->andWhere('s.invoice is null')
->addSelect('patients','payer');},
*/
// ...but with this, it does not assign our input to the form
'choices'=>[],
])
->add('patient',EntityType::class,[
'placeholder'=>'',
'class'=>Patient::class,
'mapped'=>false,
'constraints' =>[
new Assert\NotBlank(['message'=>'patient is required']),
],
'query_builder'=>$this->accountService->getActivePatientQueryBuilder(),
'choice_attr' => function($patient){
$payer = $patient->getPayer();
return $payer === null ? [] :[
'data-payer_id'=>$payer->getId(),
];
},
])
// other elements etc omitted for brevity
;
}
}
Выборы «4714», «4743», «4772», «4801», «4830», «4859», «4888»,
»4917», «4946» не существуют в списке выбора.
Достаточно справедливо. Итак, вопрос: как мне добавить эти варианты в свой элемент EntityType после отправки формы?
Я читал о EventListeners в документации, и FormEvents::PRE_SUBMIT выглядит как хорошее событие для подключения. Но после долгой борьбы с этим ничего не работает, и я не могу найти ничего об этом в документации.
Другое возможное решение, которое должно сработать, - сделать это в два этапа, где сначала они выбирают пациента, затем я динамически отображаю форму с сеансами-кандидатами, отфильтрованными до тех, которые принадлежат этому пациенту и не связаны со счетом. Но я
упрям и хочу, чтобы Symfony позволила этому элементу принимать мои данные.
Подробнее здесь: https://stackoverflow.com/questions/735 ... pe-element
Мобильная версия