CakePHP 4中BreadcrumbsHelper::templates方法不存在问题求助
解决CakePHP 4面包屑“templates方法不存在”的问题
嘿,这个问题我之前也碰到过,其实就是方法名搞混啦!CakePHP 4的BreadcrumbsHelper里根本没有templates()这个用来设置模板的方法,你用错了方法名,正确设置模板的方法是setTemplates()。
错误原因
你调用的$this->Breadcrumbs->templates()是错误的——在CakePHP 4中,templates()方法是用来获取当前已配置的模板数组的,不能传入参数修改模板;而用来设置模板的正确方法是setTemplates(),这才是能接收模板配置数组的方法。
修正后的代码
直接把templates()替换成setTemplates()就能解决问题,完整代码如下:
// 添加面包屑条目 $this->Breadcrumbs->add('Add', ['controller' => 'Products', 'action' => 'add']); // 设置面包屑模板(改用正确的setTemplates方法) $this->Breadcrumbs->setTemplates([ 'wrapper' => '<nav class="breadcrumbs"><ul{{attrs}}>{{content}}</ul></nav>', ]); // 渲染面包屑 echo $this->Breadcrumbs->render( ['class' => 'breadcrumbs-trail'], ['separator' => '<i class="fa fa-angle-right"></i>'] );
更简洁的写法
你也可以不用单独调用setTemplates(),直接在render()方法的第二个参数(选项数组)里传入模板配置,代码会更紧凑:
$this->Breadcrumbs->add('Add', ['controller' => 'Products', 'action' => 'add']); echo $this->Breadcrumbs->render( ['class' => 'breadcrumbs-trail'], [ 'separator' => '<i class="fa fa-angle-right"></i>', 'templates' => [ 'wrapper' => '<nav class="breadcrumbs"><ul{{attrs}}>{{content}}</ul></nav>', ] ] );
额外检查项
如果修改后还是有问题,记得确认你已经在AppView.php的initialize()方法里加载了BreadcrumbsHelper:
public function initialize(): void { parent::initialize(); // 加载面包屑助手 $this->loadHelper('Breadcrumbs'); }
内容的提问来源于stack exchange,提问作者Niloy Rony
相关产品推荐
相关产品推荐

