CakePHP: Chiamata a una funzione membro setFlash() on a non-object

Ottengo il seguente errore durante il tentativo di eseguire il logout del mio CakePHP app:

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

Questo è il codice per linee 74, 75 e 76:

function logout() {
    $this->Session->setFlash('Good-Bye');
    $this->redirect($this->Auth->logout());
}
  • Non riesco a capire l’errore.
  • Se ci sarebbe un badge per “più inutile commento”, #1 avrà se di sicuro 😛 volentieri la risposta giusta è a soffietto.
InformationsquelleAutor Cameron | 2011-02-02

 

One Reply
  1. 66

    Sembra che non hai la Sessione componente caricato nel tuo blog controller.

    La Sessione componente deve essere caricato di default, ma se hai impostato i componenti della matrice in AppController questo sovrascriverà le impostazioni predefinite.

    Questo significa che se si dispone di

    var $components = array();

    nel AppController, assicurarsi che il componente di Sessione è inclusa sono:

    var $components = array('Session');

    In alternativa, è possibile caricare la Sessione di componente degli Utenti controller se non si desidera utilizzare app-wide.

    • Grazie 🙂 ho pensato di Sessione è stato di aiuto e incluso come che invece di un componente!
    • CakePHP fornisce sia: SessionComponent per l’uso della sessione nel controller, e SessionHelper per il punto di vista.
    • In realtà, c’è anche una Sessione di supporto. È necessario utilizzare il componente di Sessione quando si vogliono fare le cose con la seduta in il controller di utilizzare la Sessione di supporto per fare le cose con la vostra seduta in vista. Se si sta impostando un messaggio flash con la Sessione di componente del controllore, si sta andando ad avere per utilizzare la Sessione di supporto per la visualizzazione in visualizzazione.
    • Il suo lavoro come un fascino! Davvero mi aiuta molto.
    • Mi sono imbattuto in questo problema anche quando si utilizza il cakephp esempio di blog. Non so se l’attivazione della DebugKit barra degli strumenti rimosso la sessione o non. Con l’aiuto di questa risposta, ho aggiunto Sessione di matrice già c’è: class AppController extends Controller { public $components = array('DebugKit.Toolbar','Session'); }
    • Per evitare qualsiasi proprietà di ignorare? come possiamo fare qualcosa come genitore::anyMethod();

Lascia un commento