我有一个映射到实体的Symfony表单,但有三个可选值。每个值都有一个与之关联的复选框,这些复选框实际上没有映射到实体。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('checkbox1', 'checkbox', array(
'mapped' => false,
'label_render' => false,
'required' => false,
))
->add('value1', 'text', array(
'required' => false,
))
->add('checkbox2', 'checkbox', array(
'mapped' => false,
'label_render' => false,
'required' => false,
))
->add('value2', 'text', array(
'required' => false,
))
->add('checkbox3', 'checkbox', array(
'mapped' => false,
'label_render' => false,
'required' => false,
))
->add('value3', 'text', array(
'required' => false,
))
;
}
如果选中相应的复选框,我想要显示所需的文本字段。我知道实体内部的验证回调,但是这里的复选框字段实际上没有映射,所以我需要表单级别的东西。我在setDefaultOptions方法中看到了有关验证组回调的内容,但所有示例都与实际实体关系过于紧密。有什么帮助吗?
答案 0 :(得分:1)
我认为你需要使用EventListener。
按照文档:http://symfony.com/doc/current/components/form/form_events.html。
您可以执行以下操作:
->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
->add('value1', 'text', array(
'required' => true,
))
})
选中复选框时。你必须使用Ajax post方法。这很简单。