我想让一个模块控制器实现不同的操作方法,但我不希望这些URL出现像
www.example.com/module/index/action1
www.example.com/module/index/action2
www.example.com/module/index/action3
其中/index/
将我们带到“IndexController”。拥有我想要的网址
www.example.com/module/action1
www.example.com/module/action2
www.example.com/module/action3
我需要为每个操作方法创建一个控制器类。在一个漂亮的类/文件/控制器中使用不同的操作方法获取我想要的URL的最佳方法是什么?我想知道除了URL重写之外是否还有其他方法。如果没有,你能指点我为Magento做一个很好的URL重写教程吗?
答案 0 :(得分:0)
如果您不想在Web服务器上进行URL重写,那么您也可以在Magento的代码中进行URL重写。例如,您可以像这样覆盖Mage_Core_Controller_Varien_Router_Standard中的Match功能:
/* after getting the controller name and action name... */
if ((strcmp($module, 'myModuleName') == 0) && (strcmp($action, 'index') == 0)) {
$action = $controller;
$controller = 'index';
}
/* before checking if this place should be secure and instantiate controller class
我认为Web服务器上的URL重写将更清晰,更易于管理。
如果您使用的是Magento的URL重写,则可能需要为每个操作指定一个规则,例如:
Type: custom
Request Path: myModuleName/hello
Target Path: myModuleName/index/hello
您可以在目录>下的管理员中指定这些网址重写规则。 URL重写管理
答案 1 :(得分:0)
没有真正的理由违反Magento reuter/controller/action
计划。对于他们创建的任何偏差,URL重写功能。
您甚至可以省略module
部分来创建网址重写。创建URL重写非常简单,我认为您不需要教程,只需打开管理面板,转到目录 - > Url重写管理。点击创建新的重写,选择自定义类型,将所需的uri部分添加到请求路径(module/action
),并将实际的uri添加到目标路径(module/controller/action
)。