CakePHP没有显示我的表单错误

时间:2011-08-30 07:33:05

标签: forms validation cakephp

我正在尝试为我的网络应用程序创建一个登录表单 即使我使用的是$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 个答案:

答案 0 :(得分:1)

除非您保存到数据库中,否则不会自动进行验证。将控制器中登录方法的第一行更改为

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

答案 1 :(得分:1)

echo $this->Session->flash('auth');放在form->create之前。您无需验证登录表单,Auth将为您处理。阅读食谱:http://book.cakephp.org/view/1250/Authentication

由于您使用的是Auth,因此密码的minLength验证无效。