感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
如果在验证组你需要一些高级的逻辑(例如根据提交的数据),你可以设置validation_groups
为数组:
这将在表单提交后,执行验证之前,调用Client
类的静态方法determineValidationGroups()
。表单对象作为一个参数传入到该方法(下面例子)。你也可以通过一个Closure
来定义整个逻辑:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | use AppBundle\Entity\Client;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
// ...
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => function (FormInterface $form) {
$data = $form->getData();
if (Client::TYPE_PERSON == $data->getType()) {
return array('person');
}
return array('company');
},
));
} |
使用validation_groups
配置去覆盖正在使用的默认验证组。如果你想要去验证实体的默认约束就必须调整选项如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | use AppBundle\Entity\Client;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
// ...
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => function (FormInterface $form) {
$data = $form->getData();
if (Client::TYPE_PERSON == $data->getType()) {
return array('Default', 'person');
}
return array('Default', 'company');
},
));
} |
在验证组章节中你可以找到更多验证组和默认约束的细节。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。