2011-10-08 92 views
0

使用cakephp 2.0 rc3。CakePHP驗證(+ preg_match() - 警告)

按照我的模型驗證:

var $validate = array(
     'loginname' => array(
      'minCharactersRule' => array(
       'rule' => array('minLength', 3), 
      ), 
      'alphaNumericRule' => array(
       'rule' => 'alphaNumeric', 
      ), 
      'uniqueRule' => array(
       'rule' => 'isUnique', 
      ), 
      'on' => 'create', 
      'required' => true, 
      'allowEmpty' => false, 
     ), 

     'password' => array(
      'minCharactersRule' => array(
       'rule' => array('minLength', 5), 
      ), 
      'required' => true, 
      'allowEmpty' => false, 
     ), 

     'email' => array(
      'emailRule' => array(
       'rule' => array('email'), 
      ), 
      'uniqueRule' => array(
       'rule' => 'isUnique', 
      ), 
      'required' => true, 
      'allowEmtpy' => false, 
     ), 

     'display_name' => array(
      'betweenRule' => array(
       'rule' => array('between', 3, 20), 
      ), 
      'uniqueRule' => array(
       'rule' => 'isUnique', 
      ), 
      'required' => true, 
      'allowEmpty' => false, 
     ), 

     'registered' => array(
      'rule' => array('date', 'ymd'), 
      'required' => false, 
      'allowEmpty' => false, 
      'on' => 'create' 
     ), 

     'status' => array(
      'rule' => 'numeric', 
      'required' => false, 
      'allowEmpty' => false, 
      'on' => 'create' 
     ), 
    ); 

當我填寫各個領域,並提交即時得到「需要」的錯誤消息... 調試($這個 - >型號 - > validationErrors)說:

Array(
[loginname] => Array 
    (
     [0] => required 
    ) 

[password] => Array 
    (
     [0] => required 
    ) 

[email] => Array 
    (
     [0] => required 
    ) 

[display_name] => Array 
    (
     [0] => required 
    )) 
除了

一些難看出現警告:

Warning (2): preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash [CORE/Cake/Model/Model.php, line 2981] 

(4次)

當我第一次看到它時,我以爲我誤輸入任何內容,但在檢查3-4次並得到同樣的錯誤後,我決定來這裏問:x 我錯過了什麼?運行的想法......

nahri

回答

0

再次閱讀食譜示例後,我找到了解決方案。

每一條規則都必須具有required,allowEmpty等參數,而不是字段本身。

這是沒有意義的我,但多數民衆贊成它是如何在手冊中描述以及它是如何工作..

-1

required => true並不意味着一樣的驗證規則notEmpty()required => true表示數組鍵必須存在 - 這並不意味着它必須有一個值。因此,如果字段不存在於數據集中,則驗證將失敗,但如果提交的值爲空,則可能(取決於規則)成功('')

所以在你的情況下,你可以註釋掉所有的required => true,所有應該沒問題。

+0

我知道notEmpty之間的差異,需要和字段在請求數據,我測試了一下。 它必須是別的東西(preg_match()的警告原因?) – nahri

+0

我同意不管什麼「必需」設置爲shoudnt是任何警告。 – mark