我正在重建CakePHP 2.0中的一个站点,需要将一些旧URL路由到新的URL。例如,这个:
http://www.example.com/widget/helpbox/location/mackay-qld
将路由到此:
http://www.example.com/widgets/answer/location_id:10542
为了做到这一点,我有以下路线:
Router::connect(
'/widget/helpbox/location/mackay-qld',
array(
'controller' => 'widgets',
'action' => 'answer',
'location_id' => 10542
)
);
当我调试$ this-> request-> params时,我得到了这个:
Array
(
[plugin] =>
[controller] => widgets
[action] => answer
[named] => Array
(
)
[pass] => Array
(
)
[location_id] => 10542
[isAjax] =>
)
但我希望如此:
Array
(
[plugin] =>
[controller] => widgets
[action] => answer
[named] => Array
(
[location_id] => 10542
)
[pass] => Array
(
)
[isAjax] =>
)
我也尝试过调用
Router::connectNamed(array('location_id'));
......但无济于事。 location_id仍然以相同的方式传递 - 而不是作为命名参数传递。
有谁知道正确的语法?
答案 0 :(得分:1)
在提交机票并获得响应后,机票无效,这迫使我深入挖掘。我终于明白了需要做些什么。由于入站URL不包含命名参数,因此无法按照您尝试的方式建立路由连接。路由连接用作关于如何将某些位置路由到新位置的模板。但是,您要做的是将特定URL路由到新URL。您正在寻找的是重定向。
Router::redirect(
'/widget/helpbox/location/mackay-qld',
array(
'controller' => 'widgets',
'action' => 'answer',
'location_id' => 10542,
),
);
这应该返回您正在寻找的结果。