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";
        }

但回报总是真实的。

我尝试运行 cakephp 2..7.2 和 2.6.0 但结果仍然相同。

4

1 回答 1

1

在 CakePHP 2.x 中,请求/表单数据是通过$this->request->datanot访问的$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 回答