3
我有一些複雜的表單,有幾個子表單,我希望能夠根據主表單中選擇的單選按鈕分別驗證每個子表單。我想通過驗證組來實現這一點。我有data_class
模型,我使用數組。基於已提交數據的Symfony2表單驗證組
這裏是我的形式簡化爲:
class MyType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('xxx', 'text', array(
'constraints' => array(
new Constraints\NotBlank(),
),
'validation_groups' => array(
'xxx',
)
))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => function(FormInterface $form) {
return array('xxx');
},
));
}
}
的問題是這一領域的驗證不會被觸發。
當這個作品,我可以很容易地改變setDefaultOptions
驗證所需的組根據提交的數據:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => function(FormInterface $form) {
$data = $form->getData();
return array($data['type']);
},
));
}
任何想法?
謝謝,這有幫助。但是,那麼在表單中使用的「validation_groups」是什麼? 關於默認組,可以使用常量Symfony \ Component \ Validator \ Constraint :: DEFAULT_GROUP。 – umpirsky
它用於指定組進行驗證。例如,您可以將常規驗證組傳遞到主窗體並在子窗體中覆蓋組。字段形式(例如文本,選擇)與主表單相同(例如主題中的MyType表單)。 –
對,清楚。非常感謝您的答覆! – umpirsky