Frage Laravel 5.1 Cookie-Problem


Ich versuche, einen Cookie zu setzen, wenn ich eine Ansicht lade:

 $cookie = Cookie::make('mycookie', $myval, 43200);
 $view = view('myview')->with($data);
 return Response::make($view)->withCookie($cookie);

Und lies den Cookie auf eine spätere Anfrage:

if (Cookie::has('mycookie')) {
   //do something
}

Der Cookie wird nie gesetzt ... wo gehe ich falsch?


5
2018-06-30 17:13


Ursprung


Antworten:


Dies funktioniert, um zuverlässig einen Cookie mit Laravel zu setzen:

 use Illuminate\Http\Request;
 use Illuminate\Contracts\Cookie\Factory;

    class MyClass
    {

        public function handle(Request $request, Factory $cookie)
        {
            $cookie->queue($cookie->make('myCookie', $request->someVal, 129600));
            return redirect('/myPage');
        }

    }

4
2017-07-28 20:51



Sie können Cookies wie folgt erstellen

$view = view('myview')->with($data);

$response = new Illuminate\Http\Response($view);

return $response->withCookie(cookie('name', 'value', $minutes));

Oder Sie können den Cookie wie folgt einreihen und er wird mit der nächsten Anfrage gesendet,

Cookie::queue('name', 'value');

return response('Hello World');

Weiterlesen


2
2018-06-30 17:37



Eine mögliche Ursache für Ihr vermisstes Cookie-Problem könnte sein, dass die Seite normal angezeigt wird, wenn Sie eine ungültige Blade-Direktive haben, jedoch werden alle gesetzten Cookies nicht beibehalten.

Ich stieß auf dieses Problem, wie ich es aufgenommen hatte @script in meiner Klingenschablone statt @section('script')

Ich vermute, der Grund, warum die Cookies gesetzt werden, ist, dass die schlechte Direktive einen Fehler im kompilierten PHP-Code verursacht, in dem die Ansicht zwischengespeichert wird, und so stürzt die Verarbeitung ab, bevor der Cookie übertragen wird.


0
2017-07-29 19:58