8

你如何在 Laravel 4 中使用 cookie?

我敢肯定这很简单,而且我没有点击,但我需要一点帮助。

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

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

那么,除了返回自定义响应之外,你如何设置呢?使用自定义响应设置它有什么好处?我什么时候想这样做?

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

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

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

4

4 回答 4

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);

是的,写的有点多。原因是 Views 和 Response 是两个不同的东西。您可以使用视图来解析各种用途的内容和数据,不一定要发送到浏览器。这就是 Response 的用途,以及为什么如果要设置标头、cookie 或类似性质的东西,它是通过 Response 对象完成的。

于 2013-09-07T03:56:19.307 回答
5

这个是我比较喜欢用的:在任何时候,你都可以排队一个cookie在下一个请求中发送

Cookie::queue('cookieName', 'cookieValue', $lifeTimeInMinutes);
于 2014-01-21T18:05:14.577 回答
3

如其他答案中所述,您可以简单地将 Cookie 附加到响应/视图/重定向。

$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

于 2014-01-21T17:57:18.637 回答
1

您还可以像这样将 cookie 附加到重定向

return Redirect::route('home')->withCookie($cookie);
于 2013-10-23T14:23:00.083 回答