2011-07-21 78 views
0

我有一个应用程序,我正在处理一些非常奇怪的路由涉及传递的参数。一切正常,链接反向路由正确,除了分页。我正在撕掉我的头发,但一定是失去了一些东西。CakePHP路由和分页问题

我的路线是:

Router::connect('/manufacturer/:manufacturer/:friendly0', array('controller'=>'categories', 'action'=>'view'), array('pass'=>array('manufacturer', 'friendly0'))); 
Router::connect('/manufacturer/:manufacturer/:friendly0/:friendly1', array('controller'=>'categories', 'action'=>'view'), array('pass'=>array('manufacturer', 'friendly0', 'friendly1'))); 
Router::connect('/manufacturer/:manufacturer/:friendly0/:friendly1/:friendly2', array('controller'=>'categories', 'action'=>'view'), array('pass'=>array('manufacturer', 'friendly0', 'friendly1', 'friendly2'))); 
Router::connect('/manufacturer/:manufacturer/:friendly0/:friendly1/:friendly2/:friendly3', array('controller'=>'categories', 'action'=>'view'), array('pass'=>array('manufacturer', 'friendly0', 'friendly1', 'friendly2', 'friendly3'))); 
Router::connect('/manufacturer/:manufacturer/:friendly0/:friendly1/:friendly2/:friendly3/:friendly4', array('controller'=>'categories', 'action'=>'view'), array('pass'=>array('manufacturer', 'friendly0', 'friendly1', 'friendly2', 'friendly3', 'friendly4'))); 

,我已经添加了通过参数传递给了分页程序选项是这样的:

$this->Paginator->options(array('url'=>array(
    'controller' => 'categories', 
    'action' => 'view', 
    'manufacturer' => 'nsm', 
    'friendly0' => 'Accessories' 
))); 

然而,分页程序链接出来是这样的:

/分类/浏览/页面:2 /制造商:nsm/friendly0:配件

他们sh乌尔德是:

/制造/ NSM /附件/页:2

谁能帮助?

在此先感谢。

编辑:

如果我添加/ *,以每条路线然后分页链接和定期的联系工作,如预期的目的,而是只有第一个途径。我猜测,在调度期间应该匹配其他路由时,由于/ *,第一条路由始终为真。

有趣的是,如果我改变这些路线是这样的顺序:

Router::connect('/manufacturer/:manufacturer/:friendly0/:friendly1/*', array('controller'=>'categories', 'action'=>'view'), array('pass'=>array('manufacturer', 'friendly0', 'friendly1'))); 
Router::connect('/manufacturer/:manufacturer/:friendly0/*', array('controller'=>'categories', 'action'=>'view'), array('pass'=>array('manufacturer', 'friendly0'))); 

然后蛋糕似乎认为页:2名为PARAM应该是通过ARG并将它传递给友好:1。

+0

我建议你改变你的路由配置在你的其他问题回答,看是否分页程序仍然给任何问题... –

回答