0

ユーザーモデル

//...

public $validate = array(
    "username" => array(
        "alpha-numeric" => array(
            'rule'     => 'alphaNumeric',
            'required' => true,
            'message'  => 'Username must contain only numbers and letters.'                 
        ),
        "between" => array(
            "rule" => array("between", 4, 25),
            "message" => "Username must contain between 4 to 25 characters."
        )
    ),

//...

ユーザーコントローラー

public function index() {
    debug($this->data); // displays values as expected
    debug($this->User->validates()); // always false, unless I remove alphanumeric rule
}

送信時に、テキストの内容に関係なく、フォームは常にusernameフィールドをfalseとして検証します(対応するメッセージをトリガーします)。残りのフィールドも検証されません。検証ルールをまとめて削除してusernameも、残りのフィールドはまだ検証されません。(フォームは検証済みのように送信されます)

ここで何が欠けていますか?

4

1 に答える 1

4

を手動で呼び出す前に$this->User->validates()、モデルのsetメソッドを呼び出してフォームのデータを提供する必要があります。

public function index() {
    $this->User->set($this->request->data); // Only way the next method will work.
    debug($this->User->validates());
}
于 2013-01-03T03:59:21.963 に答える