2013-02-11 29 views
8

trong Layouts tôi default.ctp Tôi cóbreadcrumbs không được thêm vào quan điểm cache

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

Bên trong một cái nhìn gọi rules.cpt Tôi có

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

Khi lần đầu tiên mở (uncached) xem, breadcrumbs được trả lại như mong muốn. Với mọi hiển thị bổ sung (được lưu trong bộ nhớ cache), chỉ Home đang được hiển thị.

Khi tháo bộ nhớ đệm từ Controller

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

mọi thứ hoạt động.

Tại sao không phải là addCrumb() được gọi? Tôi đã thử nghiệm để thêm <?php echo time(); ?> vào cùng một khóa nocache hoạt động (tức là được gọi trên mỗi lần hiển thị trang).

+1

bạn đang sử dụng phiên bản CakePHP nào? – MarcDefiant

+0

v2.3 - Cảm ơn gợi ý. Tôi đã thêm một nhãn liên quan đến phiên bản-thông tin – Gundon

+1

tại sao các mẩu vụn phải ở bên ngoài bộ nhớ đệm ngay từ đầu? bạn cache trang web, do đó các liên kết của trang web cũng nên được lưu vào bộ nhớ cache vì chúng không thay đổi. – mark

Trả lời

2

Nguồn sự cố có vẻ là thứ tự của các cuộc gọi được thực hiện.

Trong phiên bản ban đầu của tôi <?php echo $this->Html->getCrumbs('/', 'Home'); ?> được gọi trước <?php $this->Html->addCrumb('Rules', '/rules'); ?> điều gì hoạt động tốt miễn là chế độ xem không được lưu trong bộ nhớ cache.

Ngay sau khi chúng được lưu trữ trong chỉ hoạt động addCrumb đang được gọi là trướcgetCrumbs.

Điều này chỉ trả lời một phần câu hỏi của tôi. Vì getCrumbs được sử dụng trong bố cục của tôi .ctp, bạn không thể thay đổi thứ tự.

Tôi đã đăng câu trả lời này chứ không phải là lưu ý trong câu hỏi của mình, để không ai nhận được tiền thưởng cho một thứ mà tôi đã viết trong câu hỏi;) Nếu bạn có thể cung cấp giải pháp cho vấn đề còn lại hoặc biết một lỗi trong Bánh, tôi rất vui được cung cấp cho bạn tiền thưởng.