ログインエラーメッセージが出ないぞ?

この記事はだいぶ前に書かれたものなので情報が古いかもしれません

Cakephp2.0の話っす。

1.×の頃って、ログインページのコントローラーはこんなことを書いとくだけで良かったと思うんですよ。

//users_controller.php
class UsersController extends AppController {
    var $components = array('Auth');

    function beforeFilter() {
        $this->Auth->loginRedirect = '/users/index/';
        $this->Auth->loginError = 'IDかパスワードが違います';
    }

    function login() {
        if($this->Auth->user()) {
            $this->redirect($this->Auth->loginRidrect);
        }
    }
}

//login.ctp
<?php echo $session->flash('auth') ?>

細かいとこは省略して書きましたが、要するに何が言いたいのかっていうと、『$this->Auth->loginError』ってところにログインエラー時のメッセージを書いとけば、ログイン用のアクションでは何も書かなくても自動的にエラー時にメッセージが表示できるようになってたと思うんですよ。

でも、2.0ではそうもいかなくなった。

前にこの記事でびみょ~にAuthコンポーネントについて触れましたが、Cakephp2.0ではAuthコンポーネントのlogin()メソッドが自動で呼ばれないんですね。だから自分で呼ばなきゃいけないんだけど、たぶん、そのせいなんだと思います。

だから、自分でセッションにエラーメッセージを書き込まなきゃいけない。

//users_controller.php
Class UsersController extends AppController {
    function login() {
        if(!empty($this->data)) {
            if($this->Auth->login()) {
                $this->redirect($this->Auth->redirect);
            } else {
                $this->Session->setFlash('IDかパスワードが違います');
            }
        }
    }
}

//login.ctp
<?php echo $this->Session->flash() ?>

ビューでのヘルパーの呼び出し方も2.0ではちょっと変わってるから注意ね。これもこの辺でちょこっと書きましたけど、何かそういうことらしいっすわ。


何でこの辺の処理が自動じゃなくなったのかはよく分からないですけど、そうした方が汎用性が高かったのかな……?

まだコメントはいただけてないみたい……
もしかしたら何か関連しているかも?