Php 如何使用HTML助手或在单元格中调用initialize()?

Php 如何使用HTML助手或在单元格中调用initialize()?,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,如何/可以在Cell CakePHP 3.0中使用HTML Helper/initialize() /src/View/Cell/NavCell.php namespace App\View\Cell; use Cake\View\Cell; use Cake\ORM\TableRegistry; use Cake\View\Helper\HtmlHelper; class NavCell extends Cell { public function initialize() {

如何/可以在Cell CakePHP 3.0中使用HTML Helper/initialize()

/src/View/Cell/NavCell.php

namespace App\View\Cell;

use Cake\View\Cell;
use Cake\ORM\TableRegistry;
use Cake\View\Helper\HtmlHelper;

class NavCell extends Cell
{
    public function initialize() {
        parent::initialize();
        $this->loadHelper('Html');  
    }

    public function display() {
    }
}
<?php $this->Html->script('script', ['block' => 'scriptBottom']); ?>
/src/Template/Cell/Nav/display.ctp

namespace App\View\Cell;

use Cake\View\Cell;
use Cake\ORM\TableRegistry;
use Cake\View\Helper\HtmlHelper;

class NavCell extends Cell
{
    public function initialize() {
        parent::initialize();
        $this->loadHelper('Html');  
    }

    public function display() {
    }
}
<?php $this->Html->script('script', ['block' => 'scriptBottom']); ?>

单元格既没有
initialize()
,也没有
loadHelper()
方法,您不能只是将代码组合在一起,希望它能工作。首先一定要看一下食谱和API文档,如果有必要,检查源代码

单元格提供一个
$helpers
属性,您可以在其中定义要使用/加载的helpers

class NavCell extends Cell
{
    public $helpers = [
        'Html'
    ];

    // ...
}
但是,如果您不想应用任何配置,甚至不需要这样做,因为当访问不存在的属性时,视图会延迟加载可能的帮助程序

ie在一个单元格中使用
$this->Html->script()
将是现成的

还应该注意的是,正如API文档中提到的(尽管没有详细说明),
$helpers
是使用
\Cake\View\CellTrait
的类的相应属性值提供的属性之一,即为视图设置的helpers配置(这又源于相应的控制器)您正在调用的
$this->cell()
被复制到单元格中

太长了,读不下去了,不能在单元范围之外定义/访问块
但是,单元格使用单独的视图类实例,因此您在单元格中定义/访问的块不会影响其他模板(例如布局)使用的视图!

阅读文档Hi Suraj,适用于cakephp 3.0,而不适用于cakephp 2.0。选中此项初始化帮助器类,然后您将能够调用它您的视图文件SURAJ,我以前尝试过您的方法并更新了上面的代码。它没有调用(嵌入)脚本。