如果我有模块mymodule,我有索引控制器。其中我有子行为'subaction'
通常我以
的身份访问页面 http://www.mywebsite/index.php/mymodule/index/subaction
如何从代码中设置网址,例如
http://www.mywebsite/index.php/subaction
or
http://www.mywebsite/index.php/mymodule/subaction
注意::我不想在同一个索引控制器中创建我想要的新控制器。
答案 0 :(得分:0)
Magento URL到控制器的匹配通过标准路由器工作,该路由器期望URL具有特定的表单。如果您想更改它,您可以选择一些选项:
在考虑URL匹配应如何工作时,您需要考虑Magento如何使用其原生URL计算工具以及如何获取匹配请求来构建URL。
答案 1 :(得分:-3)
您可以使用路线
来完成此操作在你的引导程序中执行以下操作
protected function _initMyRoutes() {
$this->bootstrap('frontController');
$front = $this->getResource('frontController');
$router = $front->getRouter();
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini', APPLICATION_ENV);
$router->addDefaultRoutes();
$router->addConfig($config, 'routes');
return $router;
}
并在configs目录中创建一个名为routes.ini的文件,并在其中放置以下内容
routes.myRoute.type = "Zend_Controller_Router_Route_Static"
routes.myRoute.route = "/subaction/"
routes.myRoute.defaults.module = "mymodule"
routes.myRoute.defaults.controller = "index"
routes.myRoute.defaults.action = "subaction"
OR
您可以使用
直接在引导程序中添加路径protected function _initMyRoutes() {
$this->bootstrap('frontController');
$front = $this->getResource('frontController');
$router = $front->getRouter();
$router->addDefaultRoutes();
$route = new Zend_Controller_Router_Route_Static(
'subaction',
array('module' => 'mymodule', 'controller' => 'index', 'action' => 'subaction')
);
$router->addRoute('subaction', $route);
return $router;
}
应该这样做但是使用路线建议真的很痛苦。