it-swarm.com.de

Laravel 5.2 umleiten mit Erfolgsmeldung

Ich versuche, auf Laravel eine Erfolgsmeldung auf meiner Homepage zu erhalten.

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

Aus irgendeinem Grund erhält die Variable $ success nach Ausführung dieses Codes keinen Wert.

Der Code, den ich zum Anzeigen der Erfolgsmeldung verwende:

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

Ich habe die Homepage und die Newsletter-Seite wie folgt zu der Gruppe für Web-Middleware in routes.php hinzugefügt:

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

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

    Route::post('/newsletter/subscribe','[email protected]');
});

Hat jemand eine Ahnung, warum dies nicht funktioniert?

26
Stefan

Sie sollten web-Middleware von routes.php entfernen. Das manuelle Hinzufügen von web-Middleware verursacht Probleme in session und request in Laravel 5.2.27 und höher .

Wenn es nicht geholfen hat (weiterhin routes.php ohne Web-Middleware beibehalten), können Sie einen etwas anderen Ansatz versuchen:

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

Anzeige der Nachricht, falls vorhanden:

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

sie können dies verwenden:

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

und verwenden Sie dies in Ihrer Sicht:

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

Regler:

return redirect()->route('subscriptions.index')->withSuccess(['Success Message here!']);

Klinge

@if (session()->has('success'))
    <div class="alert alert-success">
        @if(is_array(session()->get('success')))
        <ul>
            @foreach (session()->get('success') as $message)
                <li>{{ $message }}</li>
            @endforeach
        </ul>
        @else
            {{ session()->get('success') }}
        @endif
    </div>
@endif

Sie können dieses Teil jederzeit als separate Blade-Datei speichern und problemlos einbinden. Zum Beispiel:

<div class="row">
        <div class="col-md-6">
            @include('admin.system.success')
            <div class="box box-widget">
4
Alex Sholom

Alle obigen Angaben sind korrekt, aber probieren Sie diesen geraden Einzeiler:

{{session()->has('message') ? session()->get('message') : ''}}

3

Eine Möglichkeit, dies zu tun, ist das Senden der Nachricht in der Sitzung wie folgt:

Controller:

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

Aussicht:

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

Eine andere Möglichkeit besteht darin, die Sitzung zu erstellen und den Text direkt in die Ansicht einzufügen:

Controller:

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

Aussicht:

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

Die vollständige Dokumentation finden Sie hier: Umleiten mit Flashed Session-Daten

Ich hoffe es ist sehr hilfreich, Grüße.

Sie können laravel MessageBag verwenden, um vorhandenen Nachrichten eigene Nachrichten hinzuzufügen.

Um MessageBag zu verwenden, müssen Sie Folgendes verwenden:

use Illuminate\Support\MessageBag;

In der Steuerung:

MessageBag $message_bag

$message_bag->add('message', trans('auth.confirmation-success'));

return redirect('login')->withSuccess($message_bag);

Hoffe, es wird jemandem helfen.

  • Adi
1

Im Controller

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

Im Hinblick auf

@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