Symfony Form - 根据其他字段值将必填字段添加到表单中



当其他字段具有某些值时,我想向我的表单添加一些必填字段。我尝试使用PRE_SET_DATA事件执行此操作,但我无法在事件中获取数据。

我在这里的示例是在用户结婚时添加合作伙伴名称字段。

我的用户类型

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('familyStatus', ChoiceType::class, [
'label' => 'Statut de famille',
'label_attr' => [
'class' => 'fg-label'
],
'attr' => [
'class' => 'sc-gqjmRU fQXahQ'
],
'required' => true,
'choices' => [
'Married' => 'M',
'Single' => 'S'
]
])
->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$form = $event->getForm();
$user = $event->getData();
$status = $user->getFamilyStatus(); // Give me NULL
//$status = $form->get('familyStatus')->getData() Give me NULL too

/*
if ($user && $status === 'M') {
$form->add('partnerName', TextType::class, [
'required' => true,
'mapped' => false
]);
)
*/
})
;
}

怎么了?如何根据其他字段动态添加新字段? 我也尝试过POST_SET_DATA但它不起作用。

您需要文档链接这一部分中的第二个示例。

基本上,您将事件侦听器设置为整个窗体。您应该使用POST_SUBMIT事件向字段本身添加另一个侦听器。

最新更新