不想回答我的問題......但是這可能一段時間保存到另一個developper =)(是所有關於獲得好人緣)
我發現,你可以傳遞一個「選項」陣列的paginator,並在該數組內,您可以指定分頁程序將用於創建鏈接的url(控制器,操作和參數的數組)。因此,您必須在routes.php文件中編寫所有可能的路由。基本上有3種可能性:
例如:
http://localhost/author/John-Doe
的分頁程序將認爲它的第一頁。相應的路徑將是:
Router::connect('/author/:name', array('controller' => 'books','action' => 'filteredByAuthor'),array('pass'=>array('name'),'name'=>'[a-zA-Z\-]+'));
例如:
http://localhost/author/John-Doe/3 (page 3)
路線將是:
Router::connect('/author/:name/:page', array('controller' => 'books','action' => 'filteredByAuthor'),array('pass'=>array('name','page'),'name'=>'[a-zA-Z\-]+','page'=>'[0-9]+'));
- 最後當頁面和排序在url上定義時(通過點擊由paginator創建的sort鏈接)。
例如:
http://localhost/author/John-Doe/3/title/desc (John Doe's books ordered desc by title)
的路線是:
Router::connect('/author/:name/:page/:sort/:direction', array('controller' => 'books','action' => 'filteredByAuthor'),
array('pass'=>array('name','page','sort','direction'),
'name'=>"[a-zA-Z\-]+",
'page'=>'[0-9]*',
'sort'=>'[a-zA-Z\.]+',
'direction'=>'[a-z]+',
));
的觀點,你必須取消設置由分頁程序創建的URL,因爲你會指定自己的URL陣列在控制器上:
控制器:
function filteredByAuthor($name = null,$page = null , $sort = null , $direction = null){
$option_url = array('controller'=>'books','action'=>'filteredByAuthor','name'=>$name);
if($sort){
$this->passedArgs['sort'] = $sort;
$options_url['sort'] = $sort;
}
if($direction){
$this->passedArgs['direction'] = $direction;
$options_url['direction'] = $direction;
}
使用set()...所以在視圖中你需要這樣做送出可變$options_url
的觀點:
查看:
unset($this->Paginator->options['url']);
echo $this->Paginator->prev(__('« Précédente', true), array('url'=>$options_url), null, array('class'=>'disabled'));
echo $this->Paginator->numbers(array('separator'=>'','url'=>$options_url));
echo $this->Paginator->next(__('Suivante »', true), array('url'=>$options_url), null, array('class' => 'disabled'));
現在,排序鏈接您需要取消設置變量'排序'和'方向'。我們已經使用了他們創造的分頁程序的鏈接,但如果我們不將其刪除,那麼sort()函數將使用它們......我們將無法進行排序=)
$options_sort = $options_url;
unset($options_sort['direction']);
unset($options_sort['sort']);
echo $this->Paginator->sort('Produit <span> </span>', 'title',array('escape'=>false,'url'=>$options_sort));
希望這有助於=)