Je crée ma première application dans Laravel et j'essaie de comprendre les messages flash de la session. Pour autant que je sache dans l'action de mon contrôleur, je peux définir un message flash soit en allant
Redirect::to('users/login')->with('message', 'Thanks for registering!'); //is this actually OK?
Dans le cas d'une redirection vers une autre route, ou
Session::flash('message', 'This is a message!');
Dans mon modèle de lame maître, j'aurais alors:
@if(Session::has('message'))
<p class="alert alert-info">{{ Session::get('message') }}</p>
@endif
Comme vous avez sans doute remarqué que je utilise Bootstrap 3 dans mon application et je voudrais utiliser les différentes classes de messages: alert-info
, alert-warning
, alert-danger
etc.
En supposant que dans mon contrôleur, je connais le type de message que je configure, quelle est la meilleure façon de le transmettre et de l'afficher dans la vue? Dois-je définir un message distinct dans la session pour chaque type (par exemple Session::flash('message_danger', 'This is a nasty message! Something's wrong.');
)? Ensuite, j'aurais besoin d'une instruction if distincte pour chaque message de mon modèle de lame.
Tout conseil apprécié.
Réponses:
Une solution serait de flasher deux variables dans la session:
par exemple:
Ensuite, à votre avis:
Remarque J'ai mis une valeur par défaut dans le fichier
Session::get()
. de cette façon, vous n'avez besoin de le remplacer que si l'avertissement doit être autre chose que laalert-info
classe.(c'est un exemple rapide et non testé :))
la source
Session::get()
Cela sera très pratique.À votre avis:
Ensuite, définissez un message flash dans le contrôleur:
la source
Ma façon est de toujours Rediriger :: back () ou Redirect :: to ():
J'ai une fonction d'assistance pour le faire fonctionner pour moi, généralement dans un service séparé:
Et dans ma vue ou ma mise en page, je fais
la source
$type = $type == 'error' : 'danger';
Vous pouvez créer plusieurs messages et avec différents types. Suivez ces étapes ci-dessous:
app/Components/FlashMessages.php
"app/Http/Controllers/Controller.php
".Cela rendra le
FlashMessages
trait disponible à tous les contrôleurs qui étendent cette classe.views/partials/messages.blade.php
"boot()
" méthode de "app/Providers/AppServiceProvider.php
":Cela rendra la
$messages
variable disponible pour leviews/partials/message.blade.php
modèle " " chaque fois qu'elle sera appelée.views/partials/messages.blade.php
"Il vous suffit d'inclure le modèle de messages là où vous souhaitez afficher les messages sur votre page.
J'espère que ça vous aidera.
la source
Renvoyez simplement avec le «drapeau» que vous souhaitez traiter sans utiliser de fonction utilisateur supplémentaire. Le controlle:
Notez que j'ai utilisé le drapeau «Succès».
La vue:
Oui, ça marche vraiment!
la source
Une autre solution serait de créer une classe d'assistance Comment créer des classes d'assistance ici
Ensuite, vous pouvez le faire.
ou
et à votre avis
la source
Pas un grand fan des solutions fournies (c'est-à-dire: plusieurs variables, des classes d'assistance, une boucle à travers des «variables éventuellement existantes»). Vous trouverez ci-dessous une solution qui utilise à la place un tableau par opposition à deux variables distinctes. Il est également facilement extensible pour gérer plusieurs erreurs si vous le souhaitez, mais pour plus de simplicité, je l'ai conservé dans un seul message flash:
Redirection avec le tableau de messages flash :
Sortie basée sur le contenu du tableau:
Sans rapport puisque vous pourriez avoir votre propre méthode / plugin de notification - mais juste pour plus de clarté - bootstrapNotify est juste pour lancer bootstrap-notify depuis http://bootstrap-notify.remabledesigns.com/ :
la source
Pour mon application, j'ai créé une fonction d'assistance:
mise en page de message,
main.layouts.message
:et importez partout où afficher le message:
la source
Je fais ça d'habitude
dans ma fonction store (), je mets une alerte de succès une fois qu'elle a été enregistrée correctement.
dans ma fonction destroy (), je voulais colorer l'alerte en rouge afin de notifier qu'elle est supprimée
Remarquez, nous créons deux alertes avec des noms de flash différents.
Et à mon avis, j'ajouterai des conditions pour savoir quand le bon moment, l'alerte spécifique sera appelée
Ici vous pouvez trouver différents messages flash stlyes Flash Messages dans Laravel 5
la source
Vous pouvez utiliser les macros Laravel.
Vous pouvez créer
macros.php
dansapp/helpers
et inclure routes.php.si vous souhaitez mettre vos macros dans un fichier de classe à la place, vous pouvez consulter ce tutoriel: http://chrishayes.ca/blog/code/laravel-4-object-oriented-form-html-macros-classes-service- fournisseur
Dans votre contrôleur:
Dans votre vue
la source
Je pense que ce qui suit fonctionnerait bien avec une ligne de codes moindre.
J'utilise un paquet de grille-pain, mais vous pouvez avoir quelque chose comme ça dans votre vue.
la source
Dans le contrôleur:
Ou
dans le message d'affichage de la lame dans la lame selon le modèle souhaité:
la source
Envoyez simplement un tableau dans la session plutôt qu'une chaîne, comme ceci:
la source
Je suis tombé sur cette manière élégante de flasher des messages. Il a été fabriqué par Jeffrey Way de Laracast. Découvrez-le ... https://github.com/laracasts/flash
la source
Si vous souhaitez utiliser Bootstrap Alert pour rendre votre vue plus interactive. Vous pouvez faire quelque chose comme ceci:
Dans votre fonction: -
À votre avis: -
la source