J'essaye de rediriger vers la page précédente avec un message lorsqu'il y a une erreur fatale.
App::fatal(function($exception)
{
return Redirect::back()->with('msg', 'The Message');
}
Dans la vue essayant d'accéder au msg avec
Sessions::get('msg')
Mais rien n'est rendu, est-ce que je fais quelque chose de mal ici?
s
, et ajoutezuse
si nécessaire. En dehors de cela - devrait fonctionner.Réponses:
Essayer
et à l'intérieur de ta vue, appelle ça
la source
return Redirect::back()->with('msg', 'The Message');
t-il pas comment obtenir le "msg" ici?Session::has('msg')
Session::has('msg')
et le 'msg' n'est pas là.withErrors('some error')
- doit donc être une chaîne au lieu d'un tableau.Manette
Lame:
la source
return redirect()->back()->with('success', 'your message here');
Une approche alternative serait
Manette
Vue
la source
Dans Laravel 5.4, les éléments suivants ont fonctionné pour moi:
la source
withErrors()
méthode dans la réponse est un tableau avec deux éléments:['msg', 'The Message']
. Voir l'API pour les paramètres acceptables: laravel.com/api/4.2/Illuminate/Http/…withErrors()
méthode sont un tableau avec un élément qui est unekey => value
paire, où la valeur est un tableau. 5.4 API: laravel.com/api/5.4/Illuminate/Http/…Vous avez une erreur (faute d'orthographe):
Devrait être:
Je pense que maintenant ça devrait marcher, ça marche pour moi.
la source
Il suffit de définir le message flash et de rediriger vers l'arrière de la fonction de votre contrôleur.
Et puis vous pouvez obtenir le message dans le fichier de lame de vue.
la source
{!! Session::get("msg", '') !!}
devrait suffire.get()
vérifie déjà si la clé existe et renvoie la valeur par défaut dans le cas contraire.Dans Laravel 5.5 :
Dans la vue utilisant Blade:
la source
Dans laravel 5.8, vous pouvez effectuer les opérations suivantes:
et en lame:
la source
J'ai arrêté d'écrire ceci moi-même pour laravel en faveur du paquet Laracasts qui gère tout pour vous. Il est vraiment facile à utiliser et garde votre code propre. Il existe même un laracast qui explique comment l'utiliser. Tout ce que vous avez à faire:
Récupérez le package via Composer.
Incluez le fournisseur de services dans app / config / app.php.
Ajoutez un alias de façade à ce même fichier en bas:
Tirez le HTML dans la vue:
Il y a un bouton de fermeture à droite du message. Cela repose sur jQuery, alors assurez-vous qu'il est ajouté avant votre bootstrap.
modifications facultatives:
Si vous n'utilisez pas bootstrap ou si vous souhaitez ignorer l'inclusion du message flash et écrire le code vous-même:
Si vous souhaitez afficher le code HTML extrait par
@include('flash::message')
, vous pouvez le trouver dansvendor/laracasts/flash/src/views/message.blade.php
.Si vous devez modifier les partiels, procédez comme suit:
Les deux vues de package seront désormais situées dans le répertoire `app / views / packages / laracasts / flash / '.
la source
dans le contrôleur
Par exemple
dans le fichier lame Le message sera stocké en session et non en variable.
Par exemple
la source
Pour Laravel 5.5+
Manette:
Lame:
la source
J'ai fait face au même problème et cela a fonctionné.
Manette
Vue
la source
Pour laravel 5.6. *
En essayant certaines des réponses fournies dans Laravel 5.6. *, Il est clair qu'il y a eu des améliorations que je vais publier ici pour faciliter les choses pour ceux qui ne pourraient pas trouver de solution avec le reste des réponses.
ÉTAPE 1:Accédez à votre fichier de contrôleur et ajoutez ceci avant la classe:
ÉTAPE 2: ajoutez ceci à l'endroit où vous souhaitez renvoyer la redirection.
ÉTAPE 3: accédez à votre fichier lame et modifiez-le comme suit
Alors testez et remerciez-moi plus tard.
Cela devrait fonctionner avec laravel 5.6. * Et éventuellement 5.7. *
la source
Pour Laravel 3
Juste un avertissement sur la réponse @giannis christofakis; pour tous ceux qui utilisent Laravel 3 remplacer
avec:
la source
Laravel 5.6. *
Manette
Modèle de lame
Enyoj
la source
J'ai reçu ce message lorsque j'ai essayé de rediriger en tant que:
Quand la bonne façon est:
la source
Laravel 5.8
Manette
Lame
la source