web-dev-qa-db-fra.com

Laravel 5.2 redirige avec message de succès

J'essaie de faire passer un message de réussite sur ma page d'accueil sur Laravel.

return redirect()->back()->withSuccess('IT WORKS!');

Pour une raison quelconque, la variable $ success n'obtient aucune valeur après l'exécution de ce code.

Le code que j'utilise pour afficher le message de réussite:

@if (!empty($success))
    <h1>{{$success}}</h1>
@endif

J'ai ajouté la page d'accueil et la page de newsletter au groupe de middleware Web dans routes.php comme ceci:

Route::group(['middleware' => 'web'], function () {
    Route::auth();

    Route::get('/', function () {
        return view('home');
    });

    Route::post('/newsletter/subscribe','NewsletterController@subscribe');
});

Quelqu'un at-il une idée pourquoi cela ne semble pas fonctionner?

26
Stefan

Vous devez supprimer le middleware web de routes.php. L'ajout du middleware web provoque manuellement des problèmes liés à session et à la requête dans Laravel 5.2.27 et versions ultérieures .

Si cela n'a pas aidé (toujours, conservez routes.php sans le middleware Web), vous pouvez essayer une approche légèrement différente:

return redirect()->back()->with('message', 'IT WORKS!');

Afficher un message s'il existe:

@if(session()->has('message'))
    <div class="alert alert-success">
        {{ session()->get('message') }}
    </div>
@endif
69
Alexey Mezenin

vous pouvez utiliser ceci:

return redirect()->back()->withSuccess('IT WORKS!');

et utilisez ceci à votre avis:

@if(session('success'))
    <h1>{{session('success')}}</h1>
@endif
18
Mohammad Rajabloo

Une façon de faire est d’envoyer le message dans la session comme ceci:

Manette:

return redirect()->back()->with('success', 'IT WORKS!');

Vue:

@if (session()->has('success'))
    <h1>{{ session('success') }}</h1>
@endif

Et une autre façon de faire est de créer la session et de placer le texte directement dans la vue:

Manette:

return redirect()->back()->with('success', true);

Vue:

@if (session()->has('success'))
    <h1>IT WORKS!</h1>
@endif

Vous pouvez consulter la documentation complète ici: Redirection avec des données de session flashées

J'espère que c'est très utile.

2

Dans le contrôleur

return redirect()->route('company')->with('update', 'Content has been updated successfully!');

En vue

@if (session('update'))
  <div class="alert alert-success alert-dismissable custom-success-box" style="margin: 15px;">
     <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
     <strong> {{ session('update') }} </strong>
  </div>
@endif
0
Genius in trouble