web-dev-qa-db-ja.com

CakePHP:非オブジェクトのメンバー関数setFlash()への呼び出し

CakePHPアプリからログアウトしようとすると、次のエラーが発生します。

Notice (8): Undefined property: UsersController::$Session [APP/controllers/users_controller.php, line 75]
Fatal error: Call to a member function setFlash() on a non-object in /Users/cameron/Sites/cakeapp/app/controllers/users_controller.php on line 75

これは、74、75、76行目のコードです。

function logout() {
    $this->Session->setFlash('Good-Bye');
    $this->redirect($this->Auth->logout());
}
29
Cameron

UsersコントローラにSessionコンポーネントが読み込まれていないようです。

Sessionコンポーネントはデフォルトで読み込まれるはずですが、AppControllerでコンポーネントの配列を設定している場合は、デフォルトが上書きされます。

これは、

var $components = array();

appControllerで、Sessionコンポーネントがそこに含まれていることを確認してください:

var $components = array('Session');

または、アプリ全体で使用したくない場合は、UsersコントローラーにSessionコンポーネントを読み込むことができます。

66
mtnorthrop