你如何在Laravel 4中使用cookies?
我确信这很简单,只是没有点击我,但我需要一些帮助。
据我所知,你必须创建一个像这样的cookie:
$cookie = Cookie::make('test-cookie', 'test data', 30);
然后,除了返回自定义响应之外,您如何设置它?使用自定义响应设置它有什么用?我什么时候想做这个?
如果我想设置cookie并返回视图怎么办?除了向我展示如何使用return Response::make('some text')->withCookie('test-cookie')
之外,withCookie()
实际上对我有什么好处?
就像我说的,我可能只是在这里遗漏了一些东西,但我如何以实用的方式使用cookie ...
...就像有人输入信息,登录等等,我想设置一个cookie并将它们带到一个用视图制作的页面?
答案 0 :(得分:10)
要返回带有视图的cookie,您应该将视图添加到Response对象,并返回整个视图。例如:
$view = View::make('categories.list')->with('categories', $categories);
$cookie = Cookie::make('test-cookie', 'test data', 30);
return Response::make($view)->withCookie($cookie);
是的,写起来要多一些。原因是视图和响应是两个不同的东西。您可以使用视图来解析内容和数据以用于各种用途,而不一定用于发送到浏览器。这就是响应的目的,以及为什么如果你想设置标题,cookie或那种性质的东西,它是通过Response对象完成的。
答案 1 :(得分:3)
如其他答案中所述,您可以将Cookie简单地附加到Response / Views / Redirects。
$cookie = Cookie::make('name', 'value', 60);
$response = Response::make('Hello World');
return $response->withCookie($cookie);
或
$cookie = Cookie::make('name', 'value', 60);
$view = View::make('categories.list');
return Response::make($view)->withCookie($cookie);
或
$cookie = Cookie::make('name', 'value', 60);
return Redirect::route('home')->withCookie($cookie);
但您不需要将Cookie附加到您的回复中。使用Cookie:queue(),就像使用Cookie :: make()一样,您的cookie将在发送时包含在响应中。不需要额外的withCookie()方法。
答案 2 :(得分:3)
这是我更喜欢使用的:在任何时候,您都可以将cookie排队以便在下一个请求中发送
Cookie::queue('cookieName', 'cookieValue', $lifeTimeInMinutes);
答案 3 :(得分:1)
您还可以将Cookie附加到此类重定向
return Redirect::route('home')->withCookie($cookie);