面包屑不会添加到缓存视图中


breadcrumbs are not added on cached views

在我的Layouts default.ctp中我有

<!--nocache-->
  <?php echo $this->Html->getCrumbs(' / ', 'Home'); ?>
<!--/nocache-->

在一个名为rules.cpt的视图中,我有

<!--nocache--><?php $this->Html->addCrumb('Rules', '/rules'); ?><!--/nocache-->

第一次打开(未缓存的)视图时,面包屑将根据需要进行渲染。每次附加(缓存)渲染时,都只显示Home

从控制器中删除缓存时

// public $cacheAction = array('home' => 120, 'rules'  => 36000);

一切正常。

为什么没有调用addCrumb()?我测试了将<?php echo time(); ?>添加到相同的nocache-块中,该块可以工作(即在每次页面渲染时调用)。

问题的来源似乎是调用的顺序。

在我的初始版本中,<?php echo $this->Html->getCrumbs(' / ', 'Home'); ?>是在<?php $this->Html->addCrumb('Rules', '/rules'); ?>之前调用的,只要视图没有被缓存,什么就可以正常工作。

一旦它们仅缓存在作品中,就会在getCrumbs之前调用addCrumb

这只是部分回答了我的问题。因为getCrumbs在我的布局.ctp中使用,所以无法更改顺序。

我把这个作为答案发布,而不是作为问题的注释,这样就没有人会因为我在问题中已经写的东西而得到奖励;)如果你能为剩下的问题提供解决方案,或者知道这是否是Cake中的一个bug,我很乐意为你提供赏金