2011-02-02 18 views
29

me sale el siguiente error al intentar cerrar la sesión de mi aplicación CakePHP:CakePHP: Llamar a un setFlash función miembro() en un no-objeto

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 

Este es el código para las líneas 74, 75 y 76 :

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

No entiendo el error. – Cameron

+16

Si hubiera un distintivo para "comentario más inútil", el # 1 tomará si es seguro :-P con mucho gusto la respuesta correcta está abajo. – Flupkear

Respuesta

66

Parece que no tiene el componente de sesión cargado en su controlador de usuarios.

El componente Session se debe cargar de forma predeterminada, pero si ha configurado la matriz de componentes en AppController, esto sobrescribirá los valores predeterminados.

Esto significa que si usted tiene

var $components = array(); 

en su AppController, asegúrese de que el componente Session está incluido allí:

var $components = array('Session'); 

Alternativamente, puede cargar el componente de sesión en el controlador de Usuarios si no desea usarlo en toda la aplicación.

+2

Gracias :) ¡Pensé que Session era una ayuda y se incluía como tal en lugar de un componente! – Cameron

+0

CakePHP proporciona tanto: SessionComponent para usar la sesión en el controlador, como SessionHelper para usarlo en las vistas. – dhofstet

+4

En realidad, también hay un Ayudante de sesión. Necesita usar el componente Session cuando desee hacer cosas con la sesión en el controlador y use el Ayudante de sesión para hacer cosas con su sesión en la vista. Si está configurando un mensaje flash con el componente Sesión en su controlador, tendrá que usar el Ayudante de sesión para mostrarlo en su vista. – mtnorthrop

Cuestiones relacionadas