2016-04-20 3 views
0

Dans mon contrôleur de l'application:CakePHP3 - Flash composante qui ne travaillent pas

class AppController extends Controller 
{ 
    public function initialize() 
    { 
     parent::initialize(); 
     $this->loadComponent('Flash'); 
     $this->loadComponent('RequestHandler'); 
     $this->loadComponent('Cookie'); 
    } 

}

Dans la lecture fonction de contrôleur de fournisseur:

public function review() { 
     if ($this->request->is('post')) { 
      $userId = $this->request->session()->read('Auth.User.UserId'); 
      $partnerId = $this->request->data('PartnerId'); 
      $content = $this->request->data('Content'); 
      $commentTable = TableRegistry::get('Comment'); 
      $comment = $commentTable->newEntity(); 
      $comment->UserId = $userId; 
      $comment->PartnerId = $partnerId; 
      $comment->Content = $content; 
      $comment->CreatedBy = $userId; 
      $comment->UpdatedBy = $userId; 
      $comment->Source = $this->request->session()->read('Auth.User.LoginBy'); 
      if ($commentTable->save($comment)) { 
       $this->Flash->success('Thank you for review!'); 
      } else { 
       $this->Flash->error('So Sorry your review was failed! Please notify for us to fixed this problem!'); 
      } 
      $this->redirect('provider/' . $partnerId); 
     } 
    } 
  • Lorsque Soumttre succès d'examen, mais le flash n » t montrer. Cependant, j'essaie de créer un autre tutoriel de suivi de projet à partir de YouTube (https://www.youtube.com/watch?v=eASSNS1f3V4) pour le test et Flash travaillant dans ce projet.
  • Désolé pour mon anglais, aidez-moi s'il vous plaît. Merci beaucoup!
+0

plz vérifier sur cette URL http: //book.cakephp. org/2.0/fr/core-libraries/components/flash.html –

+0

Merci @Tonystark, je l'ai résolu. –

Répondre

0

C'est de ma faute parce que je ne comprends pas clairement le gâteau. J'ai changé la mise en page defaut de Cake alors quand Flash appelle HTML dans le dossier Element/Flash/**. Ctp sans css style de gâteau. Ainsi, la boîte de message n'apparaît pas.

+0

Avez-vous résolu le problème? –

0

Je suis ce n'est pas une réponse à votre question, mais voici quelques conseils pour améliorer votre code:

public function review(){ 
     if($this->request->is('post')){ 
      $commentTable = TableRegistry::get('Comment'); 
      $comment = $CommentTable->newEntity(); 
      $userId = $this->Auth->user('id'); 
      $comment->patchEntity($comment, $this->request->data);  
      $comment->patchEntity($comment, ['CreatedBy' => $userId, 'UserId' => $userId, 'UpdatedBy' => $userId, 'Source' => $userId]); 
      if($commentTable->save($comment)){ 
       //something 
      } else { 
       //something 
      } 
     } 
    } 

Vous pouvez mettre toutes les variables de la forme dans l'entité en une seule fois, si vous utilisez le même nom de colonne pour votre formulaire de saisie en faisant cette ligne:

$comment->patchEntity($comment, $this->request->data); 

Si vous souhaitez accéder aux variables de session utilisateur dans votre contrôleur, vous pouvez utiliser ceci:

$userId = $this->Auth->user('id'); 

Ensuite, si vous voulez mettre une autre variable dans votre entité manuellement, vous pouvez le faire comme ceci:

$comment->patchEntity($comment, ['CreatedBy' => $userId, 'UserId' => $userId, 'UpdatedBy' => $userId, 'Source' => $userId]); 

espère que cela vous aidera