проверка данных в моей пользовательской модели всегда возвращает 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, но результат все тот же.
В 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
править.
Других решений пока нет …