2013-02-10 62 views
0

我刚刚下载的CakePHP的2.3.0版全新副本,我想验证我刚刚创建了一个形式的选择字段:CakePHP的没有验证选择字段

echo $this->Form->input('province_id', array('empty' => '- select -', 'options' => $options)); 
echo $this->Form->input('username'); 

和验证:

public $validate = array(
    'username' => array(
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'A username is required' 
     ) 
    ), 

    'province_id' => array(
     'rule' => 'notEmpty', 
     'message' => 'Select something' 
    ) 
); 

用户名字段正在验证正确,但省略号被忽略。它会是什么?

回答

2

你应该这样写:

public $validate = array(
    'username' => array(
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'A username is required' 
     ) 
    ), 
    'province_id' => array(
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'Select something' 
     ) 
    ) 
); 
+0

我试过了,同样的行为。 – 2013-02-10 22:58:05

0

更好的后期则从来没有,试试这个:

public $validate = array(
    'username' => array(
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'A username is required' 
     ) 
    ), 
    'province_id' => array(
     'required' => array(
      'rule' => array('myOwnValidationRule'), 
      'message' => 'Select something' 
     ) 
    ) 
); 

function myOwnValidationRule($data) 
{ 
    if($data["province_id"] != 'empty') 
    { 
     return true; 
    } 
} 
0

它看起来像你的表单辅助声明的罚款。

我对Cake的使用经验表明,当你开始混合语法时(其中一个字段有一个嵌套数组,而另一个字段没有嵌套数组),验证会很棘手。我确信会发生什么情况或原因,但我并没有真正深入这一点,通常只是进行反复试验。

试试这个:

public $validate = array(
    'username' => array(
     'rule' => 'notEmpty', 
     'required' => true, 
     'message' => 'A username is required' 
    ), 

    'province_id' => array(
     'rule' => 'notEmpty', 
     'required' => true, 
     'message' => 'Select something' 
    ) 
);