Il y a une faute de frappe dans votre réponse btw, m'a causé quelques minutes de tracas quand j'ai copié / collé! Le <p class="notification"> est absent de la clôture ". Il est également possible de spécifier l'élément dans la mise en page, comme <?php echo $this->Session->flash('flash', array('element' => 'flash_notification')); ?>. Dans mon cas, de ce que, en défaut.ctp définit sur l'ensemble de l'application.
Selon cakephp message flash pas besoin de gérer id et class dans votre point de vue. Vous pouvez définir l'id et la classe lorsque vous setFlash comme moyen facile.
Je ne pense pas que l'actuel réponses sont une bonne approche pour flash les messages en général.
L'ensemble de l'application devrait tout simplement $this->setFlash('my message');et la vue parent ou la mise en page doit décider de la façon de l'afficher (même si c'est par l'utilisation d'un élément).
Le code suivant doit être dans la mise en page, peut-être dans le <head> section.
La disposition de la capte et transmet le message flash comme une variable à l'élément "my_custom_flash_element'.
À l'intérieur de l'élément, vous pouvez avoir toutes les fantaisie rendu avec css, et même des trucs sympas comme toastr.js (personnellement, je l'aime!!)
J'ai trouvé cette solution de contournement, à l'aide de jquery.
J'ai ce code dans le contrôleur if($var1 == null) { $this->Flash->error(__('Error message')); }
Dans /app/View/Layouts/default.ctp j'ai mis ce code
$(document).ready(function(){if($('#flashMessage').length)//Check if flashMessage exists{var message = $('#flashMessage').html();//Copy text//if I send html tags in the flash message,I use this code to print html
message = message.replace(/</g,'<');
message = message.replace(/>/g,'>');if( $('#flashMessage').hasClass("error"))//Check if it has the error class{//Create a bootstrap alert warning and set the message
$('#flashMessage').html("<div class='alert alert-warning' style='width:50%'>"+message+"</div>");}if( $('#flashMessage').hasClass("success"))//Check if it has the sucess class{//Create a bootstrap alert sucess and set the message
$('#flashMessage').html("<div class='alert alert-success' style='width:50%'>"+message+"</div>");}}});
Si vous regardez le code source, vous verrez que le second paramètre de la SessionComponent méthode est le nom d'un élément:
Vous pouvez créer un fichier views/elements (ou Views/Elements pour Cake2) appelé par exemple " flash_notification.ctp'
avec le contenu suivant:
et l'utilisation
<p class="notification">
est absent de la clôture"
. Il est également possible de spécifier l'élément dans la mise en page, comme<?php echo $this->Session->flash('flash', array('element' => 'flash_notification')); ?>
. Dans mon cas, de ce que, en défaut.ctp définit sur l'ensemble de l'application.Selon cakephp message flash pas besoin de gérer id et class dans votre point de vue. Vous pouvez définir l'id et la classe lorsque vous setFlash comme moyen facile.
De votre point de vue.
C'est tout.
dans app/élément de créer .ctp fichier (exemple : flash.ctp)
et l'utilisation
définir la catégorie,du type dans votre fichier css pour personnaliser votre Message Flash
J'espère que cela aidera
Je ne pense pas que l'actuel réponses sont une bonne approche pour flash les messages en général.
L'ensemble de l'application devrait tout simplement
$this->setFlash('my message');
et la vue parent ou la mise en page doit décider de la façon de l'afficher (même si c'est par l'utilisation d'un élément).Le code suivant doit être dans la mise en page, peut-être dans le
<head>
section.La disposition de la capte et transmet le message flash comme une variable à l'élément "my_custom_flash_element'.
À l'intérieur de l'élément, vous pouvez avoir toutes les fantaisie rendu avec css, et même des trucs sympas comme toastr.js (personnellement, je l'aime!!)
Exemple: (my_custom_flash_element.ctp)
Aussi découvrez ce merveilleux concept sur transitoire des messages flash par @dereuromark
J'ai trouvé cette solution de contournement, à l'aide de jquery.
J'ai ce code dans le contrôleur
if($var1 == null) { $this->Flash->error(__('Error message')); }
Dans /app/View/Layouts/default.ctp j'ai mis ce code