有没有办法根据表单中的选定值强制执行不同的验证组?例如,如果我有付款信息表单并且选择了“信用卡”,那么我将应用“credit_card”验证组。如果不是,那么我将应用默认验证组。我知道如何在创建表单时设置验证组,但是,我不知道如何根据表单的值动态设置它。
我正在尝试避免使用回调,因为我想使用Symfony的内置验证器。
答案 0 :(得分:0)
事实证明,您可以在表单的setDefaultOptions方法中执行此操作:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(
array(
'data_class' => 'IRC\GlobalBundle\Form\Entity\Checkout\OrderPayment',
'validation_groups' => function(FormInterface $form) {
/** @var PaymentType $paymentType */
$paymentType = $form->getData()->getPaymentType();
if ($paymentType->getId() === PaymentType::CREDIT_CARD) {
return array('credit_card');
} else {
return false;
}
},
)
);
}