gpt4 book ai didi

symfony - 将验证组设置为 symfony 2 中的嵌入表单

转载 作者:行者123 更新时间:2023-12-03 23:52:17 24 4
gpt4 key购买 nike

如何在嵌入式表单中设置验证组?
我有两个实体 A 和 B 并为每个实体形成表单(FormA、FormB)
我在 FormB 中嵌入了 FormA

class FormB extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('A', new FormA());
}
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array(
'data_class' => 'Acme\TestBundle\Entity\B',
'validation_groups'=>function(FormInterface $form) {
// set validation group for FormA here
},
'cascade_validation'=>true
));
}
}

如何从 FormB 设置 FormA 的验证组?

最佳答案

这个对我有用

class FormB extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('A', new FormA(), array('validation_groups' => array('yourValidationGroup')));
}
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array(
'data_class' => 'Acme\TestBundle\Entity\B',
'cascade_validation'=>true
));
}
}

还在 FormB->setDefaultOptions 中定义验证组工作。它将验证组应用于所有子表单。
    public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array(
'data_class' => 'Acme\TestBundle\Entity\B',
'cascade_validation'=>true,
'validation_groups' => array('yourValidationGroup')
));
}

要根据基础数据使用它,您可以将该代码放在事件监听器上:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->addEventListener(
FormEvents::POST_SET_DATA,
function(FormEvent $event) {
$form=$event->getForm();
/**
* @var ContactDetail $detail
*/
$entity=$form->getData();
if($entity->getA()->isRequired()){
$form->add('A', new FormA(), array('validation_groups' => array('yourValidationGroup')));
} else {
$form->add('A', new FormA(), array());
}
}
);
}

关于symfony - 将验证组设置为 symfony 2 中的嵌入表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18739606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com