我如何创建一个自定义模块,该模块具有动态名称为动态的控制器,从某种意义上说,用户可以在管理区域随意配置并在自定义模块中自动更新?
答案 0 :(得分:3)
我认为您可以通过在控制器上使用魔术php方法__call
来解决这个问题。
我假设您将操作名称存储在名为“mymodule / controller / action”的Magento配置中,因此您可以使用以下命令获取值:
Mage::getStoreConfig('mymodule/controller/action');
然后你有控制器,例如Mymodule / controllers / TestController.php
然后在该控制器中添加方法,如下所示:
public function __call($method, $arg) {
if ($method == Mage::getStoreConfig('mymodule/controller/action')) {
//Do whatever you want
}
}
这将使您的控制器//使用您在配置中指定的操作访问它时执行任何操作。基本的想法就是这样。希望这会有所帮助。
答案 1 :(得分:1)
您可以在控制器中覆盖此方法:
public function getActionMethodName($action)
{
return 'indexAction';
}
public function indexAction()
{
//action name
var_dump($this->getRequest()->getActionName());
}
然后总是转到索引动作,您可以在其中使用原始动作名称作为参数。
然后:
http://mysite/mymodule/mycontroller/im-dracula-blablabla
会工作!