CakePHP 从视图文件中访问 cookie


CakePHP reaching cookies from the view files

我需要从视图文件访问我的cookie。我知道可以在控制器中使用 CookieComponent 并传递 cookie 值以查看带有set()的文件。

我们网站的访问者有一个选项页面。用户的选择将保存到 Cookie 中。到目前为止,我一直在使用CookieComponent并检查值并使用该值进行工作。但是现在我添加了新的选项选项,因此我需要从我的视图文件或我的助手访问它们。如果我将 cookie 值从控制器传递到查看,我必须为每个操作执行此操作,我不喜欢它。此外,它还会产生更复杂的代码。

我看到了这个问题和那个问题。(也可以用$_COOKIE[<cookie_name>]读取它们,但该解决方案不能用于加密的cookie。我的 cookie 未加密,但将来可能会加密)

我的问题是为什么蛋糕的库中没有饼干助手?从视图文件访问 cookie 是一种不好的做法吗?有没有一种有条不紊的方法可以从视图访问cookie? 例如,编写一个使用 $_COOKIE 的自定义帮助程序并使用该帮助程序?

从控制器传递数据是执行此操作的适当方法。

如果需要多/所有视图中的数据,请使用Controller::beforeFilter()回调,这样变量可用于特定控制器呈现的所有视图:

class MyController extends AppController
{
    // ...
    public function beforeFilter()
    {
        parent::beforeFiler();
        $this->set('cookie', $this->Cookie->read('cookie'));
    }
    // ...
}

只需确保在阅读 cookie 之前完成可能的 cookie 组件配置即可!

我相信您可以通过SessionHelper访问它:

echo $this->Session->read($cookieName);

如果这不起作用,您可以通过javascript阅读cookie,请使用ajax调用在文档加载时读取cookie,并通过json返回来实现您的逻辑。