如何/我可以在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() {
}
}
/src/Template/Cell/Nav/display.ctp
<?php $this->Html->script('script', ['block' => 'scriptBottom']); ?>
答案 0 :(得分:3)
单元格既没有initialize()
也没有loadHelper()
方法,您只能将代码放在一起并希望它能正常工作。请务必先查看Cookbook和API文档,如有必要,请查看源代码。
Cells提供$helpers
属性,您可以在其中定义要使用/加载的帮助程序。
<强> API > \Cake\View\Cell::$helpers 强>
class NavCell extends Cell
{
public $helpers = [
'Html'
];
// ...
}
然而,如果您不想应用任何配置,这甚至是不必要的,因为当访问不存在的属性时,视图会延迟加载可能的帮助程序,
即在单元格中使用$this->Html->script()
可以开箱即用。
还应该注意的是,正如API文档中提到的(虽然不过详细),$helpers
是使用{的类的相应属性值提供的属性之一。 {1}},即为视图设置的帮助程序配置(其中依次来自相应的控制器)正在调用\Cake\View\CellTrait
的单元格。
但是,单元格使用单独的视图类实例,因此您在单元格中定义/访问的块不会影响其他模板(例如布局)使用的视图!