Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

breadcrumbs are not added on cached views

in my Layouts default.ctp I have

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

Inside a view called rules.cpt I have

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

When first opening the (uncached) view, the breadcrumbs are rendered as wished. With every additional (cached) rendering, only Home is being displayed.

When removing the caching from the Controller

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

everything works.

Why isn't addCrumb() being called? I tested to add <?php echo time(); ?> to the same nocache-block which works (i.e. is called on every page rendering).

like image 787
Gundon Avatar asked Feb 11 '13 23:02

Gundon


1 Answers

The issues source seems to be the order of the calls being made.

In my initial version <?php echo $this->Html->getCrumbs(' / ', 'Home'); ?> was called before <?php $this->Html->addCrumb('Rules', '/rules'); ?> what works fine as long as the views are not being cached.

As soon as they are cached in only works addCrumb is being called before getCrumbs.

This only partly answers my question. Because getCrumbs is used in my layouts .ctp it is not possible to change the order.

I posted this as answer and not as note on my question, so that nobody gets the bounty for something which I already wrote in the question ;) If you can provide a solution to the remaining problem or know if this is a bug in Cake, I am happy to provide you with the bounty.

like image 199
Gundon Avatar answered Oct 12 '22 00:10

Gundon