CakePHP не показывает мои ошибки формы - PullRequest
1 голос
/ 30 августа 2011

Я пытаюсь создать форму входа для моего веб-приложения.
Ошибки проверки формы не отображаются, хотя я использую массив $validate.

user.php

public $validate = array(
    'email' => array(
        'notEmpty' => array(
            'rule' => 'notEmpty',
            'message' => 'notEmpty',
            'required' => true
        ),
        'isEmail' => array(
            'rule' => 'email'
        ),
        'isUnique' => array(
            'rule' => 'isUnique'
        )           
    ),
    'password' => array(
        'notEmpty' => array(
            'rule' => 'notEmpty'
        ),
        'minLength' => array(
            'rule' => array('minLength', 8)
        )
    )
);

Я не вижу ошибки в моей модели пользователя, поэтому я показываю вам мой контроллер и мой вид.

users_controller.php

class UsersController extends AppController {
      public $name = 'Users';
      public $helpers = array(
       'Form'
      );


public function login() {
    if(!empty($this->data)) {
        if ($this->Auth->user() != null) {
            $this->Session->setFlash('You are now logged in.', 'flash/success');
            $this->redirect('/');
        } else {
            $this->Session->setFlash('You could not get logged in. Please see errors below.', 'flash/error');
        }
    }
}

login.ctp

echo $this->Form->create('User', array('action' => 'login'));
echo $this->Form->input('User.email', array(
    'label' => __('email address:', true),
    'error' => array(
        'notEmpty' => __('Email address must not be blank.', true),
        'isEmail' => __('Email address must be valid.', true),
    )
));
echo $this->Form->input('User.password', array('label' => __('password:', true)));
echo $this->Form->end('Log in');

Надеюсь, вы мне поможете. Я не могу найти свою ошибку с нескольких часов. Может быть, есть компонент или помощник, который мне нужно включить?

Ответы [ 2 ]

1 голос
/ 30 августа 2011

положить echo $this->Session->flash('auth'); до form->create.Вам не нужно проверять форму входа, об этом позаботится Auth.Прочтите поваренную книгу: http://book.cakephp.org/view/1250/Authentication

Поскольку вы используете Auth, проверка пароля minLength бесполезна.

1 голос
/ 30 августа 2011

Проверка не происходит автоматически, если вы не сохраняете в базу данных. Измените первую строку метода входа в систему контроллера на

if( !empty( $this->data ) && $this->User->validates() ) { 
    ...
...