【发布时间】:2022-01-04 20:11:37
【问题描述】:
我有一个包含 3 个字段(日期、类型事件、卖家)的表单,其中卖家是一个取决于 date 和 typeEvent 的选择类型,为此我遵循了the symfony documentation 用于动态表格。 但文档中的示例是关于一个仅依赖于另一个字段的字段。
到目前为止我做了什么:
$formModifier = function (FormInterface $form,DateTime $date = null, TypeEvent $type = null) {
if (($date === null) || ($type === null)) {$sellers = [];return;}
$repo = $this->entityManager->getRepository(User::class);
$start = $date->format("Y-m-d H:i:s");
$end = new DateTime($date->format("Y-m-d H:i:s"));
$end = date_add($end,date_interval_create_from_date_string("60 minutes"))->format('Y-m-d H:i:s');
$organisation = $this->security->getUser()->getOrganisation();
$sellers = $repo->findSellers($organisation,$start,$end);
$form->add('seller', EntityType::class, [
'class' => User::class,
'placeholder' => '',
'choices' => $sellers,
'choice_label' => 'pseudo',
'attr' => ['class'=>'seller-select'],
'required'=>false,
'expanded' =>false,
]);
};
$builder->get('start')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$start = $event->getForm()->getData();
$type = $event->getForm()->getParent()->getData()->getTypeEvent();
$formModifier($event->getForm()->getParent(), $start, $type);
}
);
$builder->get('typeEvent')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$type = $event->getForm()->getData();
$start = $event->getForm()->getParent()->getData()->getStart();
$formModifier($event->getForm()->getParent(), $start, $type);
}
);
这里的问题是,例如,当我尝试将侦听器添加到其中的“开始”字段时,我无法访问其他字段,特别是 typeEvent 字段,我尝试了 $event->getForm ()->getParent()->getData()->getTypeEvent() 但它返回 null,这就是 $event->getForm() dumped.
你可以看到 $event->getForm()->getParent()->getData() 它就像一个新的 Event() ,所有属性都为空。 所以我的问题是:有什么方法可以在那里获取 typeEvent 吗?还是我应该以不同的方式进行? 谢谢。
【问题讨论】:
标签: symfony event-listener dynamic-forms