2012-09-18 81 views
1

我試圖做路由我在CakePHP的控制器。CakePHP的路由秩序和分頁

我的控制器被稱爲UserGames。 默認CakePHP的排序代碼:

<?php echo $this->Paginator->sort('price'); ?> 

默認情況下,分揀環節是這樣的:userGames/index/sort:name/direction:asc

我已經添加了如下的路由規則:

Router::connect('/games', array('controller' => 'UserGames', 'action' => 'index')); 
Router::connect('/games/:sort/:direction', array('controller' => 'UserGames')); 

與那些分揀環節產生網址這樣的:games/name/asc

排序不會以這種方式工作和$這個 - > PassedArgs是空的。我的錯誤是什麼?

回答

0

如果你想命名的參數可在passedArgs傳遞的參數,您需要提供第三個參數,以你的第二個路由器連接::電話。

Router::connect('/games/:sort/:direction', 
    array('controller' => 'UserGames'), 
    array('pass' => array('sort', 'direction'))); 

在這種情況下,$this->passedArgs[0]將排序值和$this->passedArgs[1]將方向值。

更多信息,請參見the CakePHP docs

+0

是的,但如何告訴蛋糕PHP這個ARGS傳遞到分頁程序? –

+0

對於Paginator來提取它們,它們必須被命名或查詢字符串參數。既然你擺脫了命名參數,我不確定是否有辦法用named params來完成。但是你可以將它們轉換成查詢字符串參數。你可以試試''?' => array('sort','direction')'而不是''pass'',但我不確定它是否會提取值。如果你這樣做,當你設置'$ paginate'時,你必須指定''paramType'=>'querystring''。見[this](http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html#pagination-with-get-parameters)。 – dairystatedesigns