magento控制器的动态路由器名称

时间:2012-08-02 22:02:34

标签: magento

我如何创建一个自定义模块,该模块具有动态名称为动态的控制器,从某种意义上说,用户可以在管理区域随意配置并在自定义模块中自动更新?

2 个答案:

答案 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

会工作!