Laravel 4 – Umleitung zurück auf die gleiche Seite, von der die Anfrage kommt

Lesezeit: 4 Minuten

In Laravel 4 möchte ich den Benutzer zurück auf die Seite umleiten, von der die Anfrage kam. Beispiel: Ein Benutzer versucht, sein Profil zu aktualisieren, bearbeitet also das Profil und klickt auf SPEICHERN. Im Controller mache ich das Update und normalerweise würde ich es tun Redirect::to('profile')->with('message','Profile saved!'). Aber was ich möchte, ist, es einfach mit einer Nachricht zurückzuleiten. Kann so etwas sein Redirect::back()->with('message','Operation Successful !') wenn dies verfügbar ist. Ich möchte es, da es allgemeiner ist und ich es überall verwenden kann.

Ja das ist vorhanden:

return Redirect::back()->with('message','Operation Successful !');

Da dies jedoch eine umgeleitete Anfrage ist, müssen Sie auf die Nachricht zugreifen, indem Sie Folgendes verwenden:

echo Session::get('message');

  • …fantastisch! Das wusste ich nicht! Erstaunlich! …. aber ich verstehe immer noch nicht, wie ich diese App auf meinem Bildschirm erstellen soll? Ist wie ein Ansichtsparameter, aber anstatt ihn als Parameter zu übergeben, nenne ich ihn by Session::get('name');. Ist das korrekt?

    – Dennis Braga

    22. Januar 2014 um 19:06 Uhr


  • und ich war eine Minute zu spät 😉 … ein Tipp für Sie, @DennisBraga, wenn Sie sich nicht sicher sind, ob eine Session-Variable existiert, können Sie einen Fallback wie Session::get(‘name’, ‘fallback’) bereitstellen. Das hat mir ein oder zwei Kopfschmerzen erspart.

    – Erik Aybar

    22. Januar 2014 um 19:15 Uhr

Kurz gesagt: Ja

Können Sie sicherlich verwenden

Redirect::back()->withMessage('Profile saved!')

anstelle von

Redirect::to('profile')->withMessage('Profile saved!')

*raffinierte Funktion in Laravel, die Ihr camelCase auf der analysiert ->with('name', 'value') so dass ->withName('value') funktioniert genauso.

Ebenfalls….

Ich gehe davon aus, dass Ihr Formular an das Modell gebunden ist, z Form::model($user, [...] um Formularfelder vorab auszufüllen, aber wenn nicht, möchten Sie vielleicht die Eingabe auf der Umleitung erneut flashen (oder wenn Ihre Validierung fehlgeschlagen ist und Sie möchten, dass der Benutzer die ungültigen Informationen korrigieren kann).

Nur ein Ausschnitt [untested]…

// [[... validation and other magic here]]

if ($validator->fails()) {
    return Redirect::back()
        ->withMessage($message_fail)
        ->withErrors($validator)
        ->withInput();
}

return Redirect::back()
        ->withMessage($message_success)

Ich hoffe, das hilft!

Twitter: @ErikOnTheWeb

Benutzer-Avatar
Chris342423

Sie sollten erwägen, es nicht zu verwenden Redirect::back(). Ja, es ist verlockend und scheint um genau das zu sein, was Sie brauchen. Aber:

Das back() -Methode verwendet das Attribut „referer“ des Anforderungsheaders. Der Benutzeragent, normalerweise ein Browser, teilt dem Server (und Laravel) also die URL mit, von der er kommt. (wie Wikipedia sagt: referer ist ein Rechtschreibfehler von referrer) Aber nicht jeder User Agent / Browser liefert diese Information! Ich verwende Opera und erlaube es nicht, den Referer im Allgemeinen zu übertragen! So back() wird bei mir nicht funktionieren. (Ja, ich kann dies für eine Website zulassen, aber ich bin viel zu faul. Und sorry, ich vertraue Ihrer Website nicht.)

  • Ich hasse es, eine philosophische Debatte zu beginnen, aber denken Sie, dass Websites Ihrer eher spezifischen Konfiguration gerecht werden sollten? Ich meine, wenn wir ständig für “Was-wäre-wenn”- und Minoritäts-Setups entwickeln müssen, erzeugen wir eine Menge Overhead, der im Durchschnitt nicht einmal nützlich ist.

    – Nathan

    13. Januar 2015 um 10:33 Uhr

  • Ich weiß nicht, ob es ein echtes Problem ist oder ob 99% aller Benutzer es aktiviert haben, daher kann ich Ihnen keine Antwort geben.

    – Chris342423

    16. Januar 2015 um 16:58 Uhr


  • Dies ist nicht wirklich ein Problem, da 99,99 % der Benutzer diese Konfiguration nicht wirklich haben, sodass sie auf die einzelne Person beschränkt ist.

    – Zac Grierson

    4. Februar 2015 um 10:16 Uhr

  • Sie sind ernsthaft so paranoid, dass Sie den Referrer nicht übertragen? Ich verstehe all die keine Werbung, kein Tracking, keine Cookies und all die Sicherheit, die Sie dadurch verlieren, aber was ist falsch daran, dass die Website weiß, dass der Referrer sie selbst ist, oder dass sie weiß, dass Sie von Google kommen? Inwiefern ist das eine datenschutzbrechende Information genug, dass Sie sich die Zeit nehmen würden, diese Einstellung zu ändern?

    – Philipp Gilbert

    16. Februar 2015 um 16:19 Uhr

  • Es gibt auch Auswirkungen auf die Sicherheit: Ein böswilliger Benutzer könnte alles, was er will, in die Referer Header.

    – Flimmer

    22. Juli 2016 um 18:43 Uhr

return redirect()->back()->withMessage('Profile saved!');

Oder,

return back()->withMessage('Profile saved!');

oder

return Redirect::back()->withMessage('Profile saved!');

Benutzer-Avatar
Pinky Yknip

In Laravel 8 verwenden Sie einfach:

return back();

1258130cookie-checkLaravel 4 – Umleitung zurück auf die gleiche Seite, von der die Anfrage kommt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy