2011-02-02 1 views
29

я получаю следующее сообщение об ошибке при попытке выйти из моего CakePHP приложение:CakePHP: Вызов функции члена setFlash() на не-объект

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()); 
} 
+0

Я не понимаю ошибку. – Cameron

+16

Если бы у вас был значок «самый бесполезный комментарий», # 1 возьмет, если наверняка :-P с радостью верный ответ ниже. – Flupkear

ответ

66

Похоже, что у вас нет компонента Session, загруженного в ваш контроллер пользователей.

Компонент Session должен быть загружен по умолчанию, но если вы установили массив компонентов в AppController, это перепишет значения по умолчанию.

Это означает, что если у вас есть

var $components = array(); 

в вашем AppController, убедитесь, что компонент Session включен здесь:

var $components = array('Session'); 

В качестве альтернативы, вы можете загрузить компонент Session в контроллере Users, если вы не хотите использовать его в приложении.

+2

Спасибо :) Я думал, что Сессия была помощницей и включалась как компонент, а не компонент! – Cameron

+0

CakePHP предоставляет как SessionComponent для использования сеанса в контроллере, так и SessionHelper для его использования в представлениях. – dhofstet

+4

На самом деле есть также помощник сеанса. Вам нужно использовать компонент Session, когда вы хотите делать что-то с сеансом в контроллере, и вы используете помощник сеанса, чтобы делать что-то с вашей сессией в представлении. Если вы устанавливаете флэш-сообщение с компонентом Session в своем контроллере, вам нужно будет использовать помощник сеанса, чтобы отобразить его в вашем представлении. – mtnorthrop

Смежные вопросы