Conditional validation on Symfony2 fom checkbox widget
來(lái)源:程序員人生 發(fā)布時(shí)間:2014-09-23 15:57:22 閱讀次數(shù):2795次
這幾天做symfony,遇到一個(gè)情形:
有兩行checkbox,Row1: Checkbox A, Row2: Checkbox X, Y, Z
當(dāng)A選中的時(shí)候,X,Y,Z必須至少有一個(gè)被選中。當(dāng)A沒有選中的時(shí)候,X,Y,Z disable。
Disable用jquery很容易實(shí)現(xiàn),做validation卻花了挺久,具體為:
在Row2的Form里面加上constraints
'constraints' => array(
new AssertCount(
array(
'min' => 1,
'minMessage' => 'Please select at least one'
)),
)
這里min說明至少要選中一個(gè),minMessage提供錯(cuò)誤提示。但這里問題是當(dāng)CheckboxA沒有選中的時(shí)候一直提示Row2不能為空。
為了增加判斷何時(shí)做這個(gè)validation,增加了一個(gè)constant VALIDATION_GROUP并賦予Row2。
'groups' => static::VALIDATION_GROUP,
同時(shí),在setDefaultOptions里面加入這個(gè)group
'validation_groups' => function (FormInterface $form) {
if ($form->get('checkboxA')->getData() == false) {
return false;
} else return static::VALIDATION_GROUP;
},
當(dāng)checkboxA沒有選中的時(shí)候不做任何validation,當(dāng)選中的時(shí)候增加至少選擇一項(xiàng)的限制。
大功告成!
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)