3

我将如何创建一个自定义模块,该模块具有一个动态操作名称的控制器,因为它可以由用户在管理区域中随意配置并在自定义模块中自动更新?

4

2 回答 2

2

您可以在控制器中覆盖此方法:

public function getActionMethodName($action)
{
    return 'indexAction';
}

public function indexAction()
{
    //action name
    var_dump($this->getRequest()->getActionName());
 }

然后总是会转到索引操作,您可以在其中使用原始操作名称作为参数。

然后:

http://mysite/mymodule/mycontroller/im-dracula-blablabla

将工作!

于 2018-10-19T19:45:13.813 回答
1

__call我认为您可以通过在控制器上使用魔术 php 方法来解决此问题。

我假设您将操作名称存储在名为“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
     }
}

这将使您的控制器//在您使用配置中指定的操作访问它时执行您想要的任何操作。基本思路是这样的。希望这可以帮助。

于 2012-08-04T02:10:39.270 回答