2016-10-02 33 views
5

Występuje problem z CakePHP 3.0, który nie ma dla mnie sensu i chciałbym pomóc w rozwiązaniu problemu. Mam nazwę tabeli o nazwie użytkownicy ze sterownikiem o tej samej nazwie (UsersController). Mogę wyświetlać użytkowników w tabeli bez żadnego problemu, ale kiedy wstawiam, zmieniam lub usuwam użytkownika, pojawia się błąd.Wywołanie funkcji funkcji success() na wartości logicznej w CakePHP

Kiedy zrobić insert otrzymuję komunikat o błędzie: wywołanie funkcji członka sukcesu() na boolean UsersController.php on line 56

Jeśli patrzę w klasie kontrolera wygląda

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']); 
} 

Linia 56 to $ this-> Flash-> success (__ ("Użytkownik został zapisany."));

Użytkownik jest włożona, zaktualizowane lub usunięte z bazy danych (w zależności od żądanego działania)

Co jest zastanawiające mnie to, dlaczego kod zwróci błąd i najważniejsze jest to, w jaki sposób mogę rozwiązać ten problem?

Dziękuję bardzo za poświęcony czas.

+0

Proszę sprawdzić 'src/Szablon/Element/Flash /' i sprawdzić, czy istnieje jakikolwiek plik o nazwie 'success.ctp' –

+0

Tak jest, że zawiera:?

+0

Po prostu usuń z tego kodu php i zachowaj tylko kod HTML. Powinno działać dobrze. –

Odpowiedz

6

Wygląda na to, że komponent Flash nie jest załadowany w klasie nadrzędnej AppController. W tym celu należy dodać go ręcznie do AppController lub do niestandardowej klasy kontrolera, w moim przypadku UsersController.

Jeśli chcesz dodać go do klasy nadrzędnej, AppController otwórz plik AppController i dodaj następujące snipper kodu PHP w bocznej części klasy.

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

Okrywać chcesz załadować komponent Flash tylko w swojej klasie niestandardowej następnie dodać kod następujące snipper wewnątrz klasy niestandardowej.

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

Spowoduje to udostępnienie komponentu Flash i usunięcie błędu zgodnie z opisem w początkowym wpisie.