【发布时间】:2011-07-21 12:12:13
【问题描述】:
我目前正在开发一个应用程序,其中包含一些涉及传递参数的非常奇怪的路由。一切正常,链接反向路由正确,但分页除外。我正在扯掉我的头发,但一定是错过了什么。
我的路线是:
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'
)));
但是,分页器链接是这样的:
/categories/view/page:2/manufacturer:nsm/friendly0:Accessories
他们应该是:
/manufacturer/nsm/Accessories/page: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')));
然后 Cake 似乎认为 page:2 命名的 param 应该是一个传递的 arg 并将它传递给 friendly:1。
【问题讨论】:
-
我建议您更改您在其他问题中回答的路线配置,并查看分页器是否仍然存在任何问题...