54633


下記のソースの通りシンプルなログイン処理の実装を行ったのですがログインボタンを押した後、「Call to a member function login()
on a non-
object」というエラーが画面に表示されます。AppControllerにAuthのコンポーネントを読み込んでいるのでUsersControllerではAuthのコンポーネントを読みこまなくても良いと思っているのですがUsersControllerでもAuthを読み込む(public
$components = array('Auth'))と記載しなければいけないのでしょうか。  
※cakephp2で実装しています。

[code]

    class AppController extends Controller {
    
        // アプリケーション全体にAuthコンポーネントを適用
        public $components = array('Auth','Session');
    }
    
    class UsersController extends Controller {
    
        public function login() {
    
            if ($this->request->is('post')) {
                if ($this->Auth->login()) {
                    return $this->redirect($this->Auth->redirect());
                } else {
                    $this->Session->setFlash(
                        'test error'
                    );
                }
            }
        }
        public function logout() {
            $this->Auth->logout();
            return $this->redirect('/');
        }
    }
    
[/code]


CC BY-SA 4.0
2019-04-30T06:27:31.337
54599
2019-05-01T12:47:36.893
2019-05-01T12:47:36.893
3060
17348
question
php cakephp
Call to a member function login() on a non-objectというエラー


UsersControllerのextendsが「Controller」になっているのが原因でした。AppControllerに修正したらうまくいきました。ありがとうございました。


CC BY-SA 4.0
2019-05-01T11:57:41.013
54633
2019-05-01T11:57:41.013
17348
54599
answer