我正在尝试为我的网络应用程序创建一个登录表单
即使我使用的是$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');
我希望你能帮助我。我几个小时都找不到自己的错误。是否可能需要包含组件或帮助程序?
答案 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验证无效。