cakephp 3并使用Cookie查看单元格

时间:2015-06-09 09:57:58

标签: cakephp cakephp-3.0

我无法找到有关在视图单元格中使用$ this-> Cookie的任何信息。 当我编写这样的代码时,会出现错误:

命名空间App \ View \ Cell;

use Cake\View\Cell;

class CityCell extends Cell {

  public function display() {
      $this->Cookie->config('encryption', false);
      $cookie = $this->Cookie->read('city');
  }
}

,错误是: 错误:在null

上调用成员函数read()

那么我们可以在视图单元格中使用cookie吗?

谢谢。

1 个答案:

答案 0 :(得分:4)

当然这不起作用,查看单元格不支持使用组件,尽管它们可以被认为是“迷你控制器”,但它们实际上并不是CakePHP MVC系统中的控制器。

根据cookie是否加密,您可以使用请求对象在您的单元格中获取它们

$this->request->cookie('cookieName')

$this->request->cookies

另见 API > \Cake\Network\Request::cookie()

或者,如果他们 加密,你可以通过Cookie组件抓取它们,然后例如将它们从控制器传递到视图,最后进入像

<强>控制器

public function controllerAction() {
    // ...
    $this->set('cookie', $this->Cookie->read('cookieName'));
}

<强>细胞

public function display($cookie) {
    // ...
}

查看

$this->cell('CellName', ['cookie' => $cookie]);

另见 Cookbook > Views > View Cells > Passing Arguments to a Cell