2016-10-02 2 views
5

Ich stoße auf ein Problem mit CakePHP 3.0, das für mich keinen Sinn ergibt und Ihnen bei der Lösung helfen möchte. Ich habe einen Tabellennamen namens Benutzer mit einem Controller namens (UsersController). Ich kann die Benutzer in der Tabelle ohne jedes Problem anzeigen, aber wenn ich einen Benutzer einfüge, ändere oder lösche, erhalte ich einen Fehler.Aufruf einer Memberfunktion success() on boolean in CakePHP

Wenn ich einen Einsatz bekomme ich die Fehlermeldung: Anruf auf eine Elementfunktion Erfolg() auf boolean UsersController.php on line 56

Wenn ich in die Controller-Klasse aussehen sieht es aus wie

public function add() 
{ 
    $user = $this->Users->newEntity(); 
    if ($this->request->is('post')) { 
     $user = $this->Users->patchEntity($user, $this->request->data); 

     if ($this->Users->save($user)) { 
      $this->Flash->success(__('The user has been saved.')); 

      return $this->redirect(['action' => 'index']); 
     } else { 
      $this->Flash->error(__('The user could not be saved. Please, try again.')); 
     } 
    } 
    $this->set(compact('user')); 
    $this->set('_serialize', ['user']); 
} 

Zeile 56 ist $ this-> Flash-> Erfolg (__ ('Der Benutzer wurde gespeichert.'));

Der Benutzer eingefügt, aktualisiert oder aus der Datenbank (abhängig von der gewünschten Aktion) ist

Was mich ist rätselhaft gelöscht, warum der Code einen Fehler zurückgeben würde und am wichtigsten ist, wie ich dieses Problem lösen könnte?

Vielen Dank für Ihre Zeit.

+0

Bitte überprüfen Sie 'src/Template/Element/Flash /' und sehen, ob eine Datei 'genannt es success.ctp' –

+0

Ja, es ist, es enthält:?!

+0

Entfernen Sie einfach Ihren PHP-Code von dort und behalten Sie nur den HTML-Code. Es sollte gut funktionieren. –

Antwort

6

Es scheint, dass die Flash-Komponente nicht in der Elternklasse AppController geladen ist. Dazu müssen Sie es entweder manuell zum AppController oder zu Ihrer benutzerdefinierten Controller-Klasse hinzufügen, in meinem Fall UsersController.

Wenn Sie es zum Elternklasse AppController hinzufügen möchten, öffnen Sie die AppController-Datei und fügen Sie den folgenden PHP-Code-Snipper in der Klasse hinzu.

public function initialize() 
{ 
    $this->loadComponent('Flash'); 
} 

Incase wollen Sie nur die Flash-Komponente laden in Ihrer benutzerdefinierten Klasse dann den folgenden Code snipper in Ihrer benutzerdefinierten Klasse hinzuzufügen.

public function initialize() 
{ 
    parent::initialize(); 
    $this->loadComponent('Flash'); 
} 

Dies wird die Flash-Komponente für Sie da macht und entfernt den Fehler wie in der ersten Post beschrieben.

Verwandte Themen