【问题标题】:how to read cookie in helper class in cakephp如何在 cakephp 的助手类中读取 cookie
【发布时间】:2012-07-26 06:28:06
【问题描述】:

我在 cakephp 中使用 cookie 助手,我使用以下代码来访问 cookie 变量的值

$this->Cookie->write('testvar','testvalue');

当我尝试获取此 cookie 变量的值时,我已经创建了一个辅助类

$this->Cookie->read('testvar');

它会产生错误(调用非对象上的成员函数 read())。 有没有其他方法可以访问助手中的 cookie 变量。虽然我可以尝试 $_Cookie(服务器变量)。

【问题讨论】:

标签: cakephp


【解决方案1】:

您的助手应该如下所示:

<?php
App::uses('AppHelper', 'View/Helper');
App::uses('CakeSession', 'Model/Datasource');
class MyCookieHelper extends AppHelper 
{
         public function writeCookie($name, $value = null) 
         {
               return CakeSession::write($name, $value);
         }
         public function readCookie($name)
         {
               return CakeSession::read($name);
         }
}

你可以在你的视图中使用它:

$this->MyCookie->readCookie($cookie_var_name);

别忘了在你的控制器中包含MyCookie helper;

public $components = array('MyCookie');

【讨论】:

  • 在第 176 行的 /opt/lampp/htdocs/project/lib/Cake/Controller/Component/CookieComponent.php 中的非对象上调用成员函数 getController() 会产生错误
【解决方案2】:

您必须按照以下步骤操作:

在控制器类中,您必须放置此行,或者如果您必须在多个控制器中使用它,您可以放入 APP 控制器:

public $components = array('Cookie');

在行动/功能中,您可以使用它:

$this->Cookie->write('User.name', 'Larry');
echo $this->Cookie->read('User.name');

【讨论】:

  • 我可以在控制器类及其所有功能中获取 cookie 值。我的问题是如何获取辅助类中的值。
  • Cake 遵循 Model-View-Controller 分离的规则,由于 Components 属于 Controller 层,Helper 属于 View 层,所以我们不将两者混为一谈。您可以做的是使用组件通过控制器将数据传递给视图。然后您可以使用助手适当地处理该数据。你给定的链接也暗示了同样的事情。您可以从控制器获取数据并将其设置到视图中,并且在视图中您可以将该变量作为参数传递给辅助函数。
  • 亲爱的朋友,我很清楚这个问题但是你没有清楚地阅读这个问题。我问有没有什么方法可以让我在助手中获取cookie的值,据你说,没有任何方法。但是我们需要很多次,帮助文件上的组件和控制器功能。
  • 简单的原因是cookie组件没有帮助器类,因为其他组件像会话有会话帮助器。如果存在cookie帮助器,我们可以访问该cookie类的功能
猜你喜欢
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
相关资源
最近更新 更多