【问题标题】:How to set Cookie in Laravel in view file如何在 Laravel 中的视图文件中设置 Cookie
【发布时间】:2015-11-19 17:33:22
【问题描述】:

我想在视图文件 (example.blade.php) 中创建一个 cookie。我想在 layouts 目录中的 masterfile.blade.php 中创建 cookie,所以我没有控制器。在另一个控制器和另一个视图中,我可以设置 cookie,但我希望在应用程序启动时设置 cookie。我怎样才能做到这一点。我已经在控制器中完成了,但我不知道如何直接在视图中使用,有人帮忙。

$cookie_value= rand(1000,10000).$timestamp;
        $view = View::make('shop.show',compact('productTabs','product','storename','business'));
        $cookie = Cookie::make('gdoox_shopping_cart', $cookie_value, 1000);
        return Response::make($view)->withCookie($cookie);

【问题讨论】:

  • 您说您想从视图中执行此操作,但您也说您想在“应用程序启动时”执行此操作。是哪个?
  • @MarkAmery:我的意思是说我想在我的主页中设置 cookie。我想在 View 中执行此操作。

标签: php cookies laravel-5


【解决方案1】:

如果尚未设置 cookie,您可以使用 Global Middleware 设置您的 cookie。

public function handle($request, Closure $next)
{
    if (!$request->hasCookie('gdoox_shopping_cart')) {
        $cookie_value= rand(1000,10000).$timestamp;

        return $next($request)->headers->setCookie(Cookie::make('gdoox_shopping_cart', $cookie_value, 1000));
    }

    return $next($request);
}

不要忘记在 Http/Kernel.php 的中间件属性中注册你的中间件

【讨论】:

  • 我认为在 Route 中执行此操作会在每次呈现视图时设置一个新的 cookie。如果用户浏览器中没有设置cookie,我只想设置一次。
  • 我真的不明白你在这里想要做什么
  • 我正在购物车中工作。如果他访问该网站,我只想在用户浏览器上设置一个 cookie。现在,如果他在没有登录的情况下将任何产品添加到购物车,我可以使用此 cookie id 跟踪这些产品。所以我想做的第一件事就是设置一个cookie,我可以直接在视图文件中通过PHP方式(setcookie()函数)来做,但我正在使用Laravel找到一个解决方案。您在上面给我的解决方案对我不起作用,它没有设置 cookie。现在我已经用 PHP 的方式完成了,但我认为在使用框架时这不是一个好主意。
  • 好的,我已经编辑了答案,如果您有问题,请告诉我
猜你喜欢
  • 2015-02-12
  • 2017-12-05
  • 1970-01-01
  • 2016-09-18
  • 2017-09-16
  • 2017-12-25
  • 1970-01-01
  • 2014-05-21
  • 2021-06-30
相关资源
最近更新 更多