当其他字段具有某些值时,我想向我的表单添加一些必填字段。我尝试使用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事件向字段本身添加另一个侦听器。