在我的bootstrap文件中,我有以下路由链。期望的行为是通过/usa/:controller/:action
向本地模块发送任何请求。
例如,当调用http://{hostname}/usa/index/index
时,请求将通过本地模块,索引控制器,索引操作。
我遇到的问题是添加参数。例如,当我请求http://{hostname}/usa/index/index/id/5
尝试获取id
参数时,我收到以下错误消息:
An Error occurred. Page not found. Exception information: Message: Invalid controller specified (usa)
以下请求参数:
array (
'controller' => 'usa',
'action' => 'index',
'id' => '5',
'module' => 'default',
)
如何设置链路由以便仍然使用其他参数?
以下是应用程序引导程序中的代码:
protected function _initRouting(){
$router = Zend_Controller_Front::getInstance()->getRouter(); // Get the main router from the front controller.
$router->addDefaultRoutes(); // Don't forget default routes!
//get default local route (directs to the local module)
$defaultLocalRoute = new Zend_Controller_Router_Route(
'/:controller/:action',
array(
'module' => 'local',
'controller' => 'index',
'action' => 'index'
)
);
$regionRoute = new Zend_Controller_Router_Route(
'/usa/',
array('region' => 'usa')
);
//chain this region route to the default local route that directs to the local module
$fullRegionRoute = $regionRoute->chain($defaultLocalRoute);
//add the full route to the router (ie. hamiltonRoute, atlanticcaRoute)
$regionRouteName = 'usaRoute';
$router->addRoute($regionRouteName, $fullRegionRoute);
}
答案 0 :(得分:0)
在*
的末尾添加$defaultLocalRoute
能够解决此问题。
//get default local route (directs to the local module)
$defaultLocalRoute = new Zend_Controller_Router_Route(
'/:controller/:action/*',
array(
'module' => 'local',
'controller' => 'index',
'action' => 'index'
)
);
现在,当转到http://{hostname}/usa/product/view/id/5
时,请求会转到所需的位置 - >
module: 'local',
controller: 'product',
action: 'view',
params: array('id'=>5)