wake-up-neo.com

Laravel Mit () Nachricht zurückleiten

Ich versuche, mit einer Meldung zur vorherigen Seite umzuleiten, wenn ein schwerwiegender Fehler auftritt.

App::fatal(function($exception)
{
    return Redirect::back()->with('msg', 'The Message');
}

In der Ansicht wird versucht, die Nachricht mit aufzurufen

Sessions::get('msg')

Aber nichts wird gerendert, mache ich hier etwas falsch?

122
Mudit Tuli

Versuchen

return Redirect::back()->withErrors(['msg', 'The Message']);

und nennen Sie dies in Ihrer Sicht

@if($errors->any())
<h4>{{$errors->first()}}</h4>
@endif
192

Laravel 5

Controller

 return redirect()->back()->with('success', ['your message,here']);   

Klinge:

@if (\Session::has('success'))
    <div class="alert alert-success">
        <ul>
            <li>{!! \Session::get('success') !!}</li>
        </ul>
    </div>
@endif
101
Ketan Akbari

Ein alternativer Ansatz wäre

Regler

Session::flash('message', "Special message goes here");
return Redirect::back();

Aussicht

@if (Session::has('message'))
   <div class="alert alert-info">{{ Session::get('message') }}</div>
@endif
56
Rick

In Laravel 5.4 hat für mich folgendes funktioniert:

return back()->withErrors(['field_name' => ['Your custom message here.']]);
15
haakym

Sie haben einen Fehler (Rechtschreibfehler):

Sessions::get('msg')// an extra 's' on end

Sollte sein:

Session::get('msg')

Ich denke, jetzt sollte es funktionieren, das tut es für mich.

13
bumerang

In Laravel 5.5:

return back()->withErrors($arrayWithErrors);

In der Ansicht mit Blade:

@if($errors->has())
    <ul>
    @foreach ($errors->all() as $error)
        <li>{{ $error }}</li>
    @endforeach
    </ul>
@endif
7
Sergio

Stellen Sie einfach die Flash-Nachricht ein und leiten Sie sie von Ihrer Controller-Funktion zurück.

    session()->flash('msg', 'Successfully done the operation.');
    return redirect()->back();

Und dann können Sie die Nachricht in der View Blade-Datei abrufen.

   {!! Session::has('msg') ? Session::get("msg") : '' !!}
7
Majbah Habib

Ich habe aufgehört, dies für laravel zugunsten des Laracasts-Pakets zu schreiben, das alles für Sie erledigt. Es ist wirklich einfach zu bedienen und hält Ihren Code sauber Sogar ein Laracast , das beschreibt, wie man es benutzt.

Ziehen Sie das Paket durch Composer.

"require": {
  "laracasts/flash": "~1.0"
}

Fügen Sie den Dienstanbieter in app/config/app.php ein.

'providers' => [
  'Laracasts\Flash\FlashServiceProvider'
];

Fügen Sie dieser Datei unten einen Fassadenalias hinzu:

'aliases' => [
  'Flash' => 'Laracasts\Flash\Flash'
];

Ziehen Sie den HTML-Code in die Ansicht:

@include('flash::message') 

Rechts neben der Nachricht befindet sich eine Schaltfläche zum Schließen. Dies hängt von jQuery ab, stellen Sie also sicher, dass es vor Ihrem Bootstrap hinzugefügt wird.

optionale Änderungen:

Wenn Sie bootstrap nicht verwenden oder das Include der Flash-Nachricht überspringen und den Code selbst schreiben möchten:

@if (Session::has('flash_notification.message'))
  <div class="{{ Session::get('flash_notification.level') }}">
    {{ Session::get('flash_notification.message') }}
  </div>
@endif

Wenn Sie den von @include('flash::message') eingegebenen HTML-Code anzeigen möchten, finden Sie ihn in vendor/laracasts/flash/src/views/message.blade.php.

Wenn Sie die Partials ändern müssen, gehen Sie wie folgt vor:

php artisan view:publish laracasts/flash

Die beiden Paketansichten befinden sich nun im Verzeichnis `app/views/packages/laracasts/flash/'.

4
DutGRIFF

Ich hatte das gleiche Problem und das hat funktioniert.

Regler

return Redirect::back()->withInput()->withErrors(array('user_name' => $message));

Aussicht

<div>{{{ $errors->first('user_name') }}}</div>
2
A. Mitani

Laravel 5.6. *

Controller

if(true) {
   $msg = [
        'message' => 'Some Message!',
       ];

   return redirect()->route('home')->with($msg);
} else {
  $msg = [
       'error' => 'Some error!',
  ];
  return redirect()->route('welcome')->with($msg);
}

Klingenvorlage

  @if (Session::has('message'))
       <div class="alert alert-success" role="alert">
           {{Session::get('message')}}
       </div>
  @elseif (Session::has('error'))
       <div class="alert alert-warning" role="alert">
           {{Session::get('error')}}
       </div>
  @endif

Genießen

1
The Bumpaster

Für Laravel 5.5 +

Controller:

return redirect()->back()->with('success', 'your message here');

Klinge:

@if (Session::has('success'))
    <div class="alert alert-success">
        <ul>
            <li>{{ Session::get('success') }}</li>
        </ul>
    </div>
@endif
1

Für laravel 5.6. *

Während ich einige der in Laravel 5.6. * Bereitgestellten Antworten ausprobiere, ist es klar, dass es einige Verbesserungen gibt, die ich hier posten werde, um es denjenigen zu erleichtern, die mit dem keine Lösung finden konnten Rest der Antworten.

Gehen Sie zu Ihrer Controller-Datei und fügen Sie diese vor der Klasse hinzu:

use Illuminate\Support\Facades\Redirect;

SCHRITT 2: Fügen Sie dies hinzu, wo Sie die Umleitung zurückgeben möchten.

 return Redirect()->back()->with(['message' => 'The Message']);

SCHRITT 3: Gehen Sie zu Ihrer Blade-Datei und bearbeiten Sie sie wie folgt

@if (Session::has('message'))
<div class="alert alert-error>{{Session::get('message')}}</div>
 @endif

Dann teste und danke mir später.

Dies sollte funktionieren mit laravel 5.6. * Und möglicherweise 5.7. *

1
Akintunde

im Controller

Zum Beispiel

return redirect('login')->with('message',$message);

in Blade-Datei Die Nachricht wird in Sitzung nicht in Variable gespeichert.

Zum Beispiel

@if(session('message'))
{{ session('message') }}
@endif
1
Hatim Hussein

Für Laravel

Nur eine kurze Antwort von @giannis christofakis; für jeden, der Laravel 3 ersetzt

return Redirect::back()->withErrors(['msg', 'The Message']);

mit:

return Redirect::back()->with_errors(['msg', 'The Message']);
1
Dev1997

Ich habe diese Nachricht erhalten, als ich versucht habe umzuleiten als:

public function validateLogin(LoginRequest $request){
    //

    return redirect()->route('sesion.iniciar')
            ->withErrors($request)
            ->withInput();

Wenn der richtige Weg ist:

public function validateLogin(LoginRequest $request){
    //

    return redirect()->route('sesion.iniciar')
            ->withErrors($request->messages())
            ->withInput();
0
manix

Laravel 5.8

Controller

return back()->with('error', 'Incorrect username or password.');

Klinge

  @if (Session::has('error'))
       <div class="alert alert-warning" role="alert">
           {{Session::get('error')}}
       </div>
  @endif
0
wobsoriano