cakephp 3 并使用 Cookie 查看单元格

cakephp 3 and view cells with use of Cookie

我找不到任何关于在视图单元格中使用 $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 吗?

谢谢。

那当然不行,视图单元不支持组件的使用,虽然它们可以被认为是"mini-controllers",但在CakePHPs 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