проверка данных всегда возвращает true в cakeStack Overflow

проверка данных в моей пользовательской модели всегда возвращает 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
));


}

UsersController:

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, но результат все тот же.

0

Решение

В CakePHP 2.x данные запроса / формы доступны через $this->request->data не $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 править.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]