1

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

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

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

我的问题是为什么 Cake 的库中没有 CookieHelper ?从视图文件中获取 cookie 是一种不好的做法吗?有没有一种从视图中获取 cookie 的有条不紊的方法?例如编写一个使用$_COOKIE和使用该助手的自定义助手?

4

3 回答 3

3

从控制器传递数据是一种合适的方式。

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

class MyController extends AppController
{
    // ...

    public function beforeFilter()
    {
        parent::beforeFiler();

        $this->set('cookie', $this->Cookie->read('cookie'));
    }

    // ...
}

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

于 2013-11-02T18:33:53.457 回答
0

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

echo $this->Session->read($cookieName);
于 2013-11-04T16:01:29.737 回答
0

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

于 2013-11-08T12:45:24.127 回答