我想根据“presenceEvent”的选择(设置为“Oui”或“true”)显示或隐藏“presenceDejeuner”和“participerActivite”字段。 Symfony 等待表单验证来识别字段选择,但我需要有条件地显示这些字段。我尝试过使用事件侦听器,但它仅在预先填充字段时才有效。然而,就我而言,他们不是。我怎样才能实现这一点,以及如何使用 JavaScript 动态更改这些字段的“必需”属性?我进行了广泛的搜索,但没有找到解决方案。有什么建议吗?
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('presenceEvent', ChoiceType::class, [
'choices' => [
'Oui' => true,
'Non' => false,
],
'expanded' => false,
'multiple' => false,
])
->add('presenceDejeuner', ChoiceType::class, [
'choices' => [
'Oui' => true,
'Non' => false,
],
'expanded' => false,
'multiple' => false,
'required' => false
])
->add('participerActivite', EntityType::class, [
'mapped' => false,
'class' => Activite::class,
'choice_label' => 'activite',
'multiple' => true,
'expanded' => true,
'required' => false
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Inscription::class,
]);
}
我尝试了 symfony 文档中所说的所有内容,例如 PRE_SET_DATA 、 PRE_SUBMIT 、表单事件等。 也尝试过 Vanilla JS,但它无法识别第一个字段的选择,因为它不会在 HTML 中动态更改
绝对没有人可以帮助我吗?