在Laravel 4中使用Cookie

时间:2013-09-06 20:02:53

标签: php cookies laravel laravel-4

你如何在Laravel 4中使用cookies?

我确信这很简单,只是没有点击我,但我需要一些帮助。

据我所知,你必须创建一个像这样的cookie:

$cookie = Cookie::make('test-cookie', 'test data', 30);

然后,除了返回自定义响应之外,您如何设置它?使用自定义响应设置它有什么用?我什么时候想做这个?

如果我想设置cookie并返回视图怎么办?除了向我展示如何使用return Response::make('some text')->withCookie('test-cookie')之外,withCookie()实际上对我有什么好处?

就像我说的,我可能只是在这里遗漏了一些东西,但我如何以实用的方式使用cookie ...

...就像有人输入信息,登录等等,我想设置一个cookie并将它们带到一个用视图制作的页面?

4 个答案:

答案 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()方法。

来源:http://laravel.com/docs/requests#cookies

答案 2 :(得分:3)

这是我更喜欢使用的:在任何时候,您都可以将cookie排队以便在下一个请求中发送

Cookie::queue('cookieName', 'cookieValue', $lifeTimeInMinutes);

答案 3 :(得分:1)

您还可以将Cookie附加到此类重定向

return Redirect::route('home')->withCookie($cookie);