程序员人生 网站导航

Conditional validation on Symfony2 fom checkbox widget

栏目:access时间:2014-09-23 15:57:22

这几天做symfony,遇到一个情形:

有两行checkbox,Row1: Checkbox A, Row2: Checkbox X, Y, Z

当A选中的时候,X,Y,Z必须至少有一个被选中。当A没有选中的时候,X,Y,Z disable。


Disable用jquery很容易实现,做validation却花了挺久,具体为:

在Row2的Form里面加上constraints

'constraints' => array( new AssertCount( array( 'min' => 1, 'minMessage' => 'Please select at least one' )), )
这里min说明至少要选中一个,minMessage提供错误提示。但这里问题是当CheckboxA没有选中的时候一直提示Row2不能为空。


为了增加判断何时做这个validation,增加了一个constant VALIDATION_GROUP并赋予Row2。

'groups' => static::VALIDATION_GROUP,

同时,在setDefaultOptions里面加入这个group

'validation_groups' => function (FormInterface $form) { if ($form->get('checkboxA')->getData() == false) { return false; } else return static::VALIDATION_GROUP; },
当checkboxA没有选中的时候不做任何validation,当选中的时候增加至少选择一项的限制。


大功告成!

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐