Conditional validation on Symfony2 fom checkbox widget
來源:程序員人生 發布時間:2014-09-23 15:57:22 閱讀次數:2802次
這幾天做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,當選中的時候增加至少選擇一項的限制。
大功告成!
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈