0

ユーザー モデルのデータ検証は常に true を返します。理由を教えてもらえますか?モデル: user.php

class User extends AppModel {

var $name = "User";

public $validate = array(

    "username" => array(
        "rule" => "notBlank",
        "message" => "Please enter title !",
    ),
    "password" => array(
        "rule" => "notBlank", // tập luật là không rỗng
        "message" => "Please enter info !", // thông báo khi có lỗi
    ));


}

ユーザーコントローラー:

if(($this->request->is('post'))) {

        $this->loadModel('User');
        $this->User->set($this->data);
        echo "</br> vao ".$this->User->validates();
        if($this->User->validates()){
            echo "</br>".$this->User->validates();
            $this->Session->setFlash("Data is avaliable !");

        }else{
            $error = $this->User->validationErrors;
            $this->Session->setFlash("Data is mot avaliable !");
            echo"not validate";
        }

しかし、return is always true です。

Cakephp 2..7.2 と 2.6.0 を実行しようとしましたが、結果は同じです。

4

1 に答える 1

1

$this->request->dataCakePHP 2.x では、リクエスト/フォーム データはnot経由でアクセスされます$this->data$this->User->set()したがって、次を使用してモデルのデータを設定する行を変更する必要があります$this->request->data:-

if ($this->request->is('post')) {
        $this->User->set($this->request->data);
        if ($this->User->validates()){
            $this->Session->setFlash("Data is avaliable !");
        } else{
            $this->Session->setFlash("Data is not avaliable !");
        }
}

CakePHP の規則に固執している限り、モデルは自動ロードされるため、Userモデルをロードする必要はありません。UsersControllerだから、あなたは削除することができます$this->loadModel('User')

検証ルールを使用してnotBlankいる場合は、CakePHP 2.7 を使用していることを確認してください。このルールは以前のバージョンの Cake には存在しません。CakePHP 2.6 では、notEmptyルールを使用します。

于 2015-08-25T06:46:39.900 に答える