2013-10-02 40 views
0

验证我的用户是否检查了复选框列表中的至少一个选项时出现问题。Cakephp验证我的用户是否至少检查了一个选项

这里是我的尝试: 我的看法是这样的:

echo $this->Form->input('market_segment_targeted', array(
    'multiple' => 'checkbox', 
    'label'=>array('text' => 'Market segment targeted', 'class'=>'w120'), 
    'options' => array(
       'Home users' => 'Home users', 
       'SOHO' => 'SOHO', 
       'SMB' => 'SMB', 
       'Enterprise' => 'Enterprise' 
    ), 
)); 

在我的控制器中我已经添加以下代码片段:

$validate_on_fly = array(
         'market_segment_targeted' => array(
         'notEmpty' => array(
    'rule' => array('multiple', array('min' => 1)), 
          'required' => true, 
          'message' => 'Please select at least one!' 
         )) 
         )));  
    $this->Partner->validate = Set::merge(
          $this->Partner->validate, 
          $validate_on_fly 
         ); 

任何想法我做错了什么?

谢谢

+0

这是什么问题?模型是否允许您提交无效数据,还是阻止提交有效数据? – JJJ

+0

我可以在不检查任何选项的情况下提交此表单。 – user1482442

+0

你的代码适合我。您确定在保存数据时没有手动禁用验证,或者在保存数据后没有在控制器中修改验证规则?把一个调试($ this-> validate);在Partner.php的beforeValidate()中检查是否通过验证。顺便说一句,最好是管理模型中的所有验证... – Chris

回答

0

在CakePHP中,您可以使用模型验证复选框。这是一个简单的例子。

可以关注一下:

$this->Form->create('User'); 
$this->Form->input('User.agree', array('type'=>'checkbox', 'hiddenField'=>false, 'value'=>'0')); 
$this->Form->submit('Save'): 
$this->Form->end(); 

然后在你的模式下公共$验证,使用:

'agree'=>array(
    'Not empty'=>array(
    'rule'=>array('comparison', '!=', 0), 
    'required'=>true, 
    'message'=>'You must agree to the ToS' 
    ) 
) 
相关问题