【发布时间】:2021-05-14 07:43:17
【问题描述】:
我想根据提交的数据修改一些表单字段,所以在表单类中我做了:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('year', ChoiceType::class, [
'choices' => ['Year' => '-1'] + array_combine(range(date('Y'), date('Y') - 19), range(date('Y'), date('Y') - 19)),
'label' => false,
])
->add('make', ChoiceType::class, ['choices' => ['Make' => '-1'], 'label' => false])
->add('model', ChoiceType::class, ['choices' => ['Model' => '-1'], 'label' => false]);
//...
$builder->get('year')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) {
$year = $event->getForm()->getData();
$makes = $year === '-1' ? ['Make' => '-1'] : $this->customService->getMakes();
$event->getForm()->getParent()
->add('make', ChoiceType::class, ['choices' => $makes, 'label' => false]);
}
);
$builder->get('make')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) {
$make = $event->getForm()->getData();
$models = $make === '-1' ? ['Model' => '-1'] : $this->customService->getModels();
$event->getForm()->getParent()
->add('model', ChoiceType::class, ['choices' => $models, 'label' => false]);
}
);
}
但是,即使我提交了make 字段,第二个侦听器也永远不会执行,因此我无法修改model 字段。有什么想法吗?
【问题讨论】:
标签: php symfony symfony-forms