Lag*_*ign 0 php pagination caching cakephp
我用Cache::read(),Cache::write()在CakePHP中缓存查询.
如何更新paginator params或CACHE整个paginator?
它很容易缓存查询结果但是如何缓存$this->Paginator->params()呢?
我试着给Cache::write() $this->Paginator->params(),但如何修改$this->Paginator->params()缓存后?当我做某事时:...
$this->Paginator->params['paging'][$model] = $paginator_params;
Run Code Online (Sandbox Code Playgroud)
......我注意到了:
Indirect modification of overloaded element of CakeRequest has no effect
Run Code Online (Sandbox Code Playgroud)
我何时何地可以重写PAGINATOR params/set cached params?
谢谢.
小智 5
你需要缓存$this->request->params['paging']数组.
而你必须将Paginator Helper添加到$helpers阵列中.如果不这样做,则不会调用preRender方法的Paginator助手,并且会破坏分页链接.
$page = !isset($this->request->named['page']) ? '1' : $this->request->named['page'];
$products = Cache::read('my_unique_cache_id_' . $page, 'query');
$paging = Cache::read('my_unique_cache_id_paging_' . $page, 'query');
if ($products && $paging) {
$this->set('products', $products);
$this->request->params['paging'] = $paging;
}else{
$products = $this->paginate('Product');
Cache::write('my_unique_cache_id_paging_' . $page, $this->request->params['paging'], 'query');
Cache::write('my_unique_cache_id_' . $page, $products, 'query');
$this->set('products', $products);
}
Run Code Online (Sandbox Code Playgroud)