在我的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,我很乐意为你提供赏金