【问题标题】:Magento Custom Button Action results in 404Magento 自定义按钮操作导致 404
【发布时间】:2016-07-08 09:30:53
【问题描述】:

我正在创建一个小模块,用于向管理订单视图页面添加一个按钮。此按钮将触发自定义控制器操作,该操作将(除了其他内容)创建发票和发货。

我已经添加了按钮,我可以让它指向我的控制器操作(理论上),添加当前订单 ID 作为参数,但单击按钮只会让我进入 404 页面。

我有这个我的 config.xml:

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <id_acscourier before="Mage_Adminhtml">ID_AcsCourier_Adminhtml</id_acscourier>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>

这是我的控制器的开始:

class ID_AcsCourier_IndexController extends Mage_Adminhtml_IndexController
{

    public function indexAction() {
        $this->loadLayout();
        $this->renderLayout();
    }

    public function voucherAction() {
        // more stuff here...
    }
}

我不确定 config.xml 代码,经过几个小时的阅读和搜索,我找到了一个建议此解决方案的示例。 该操作不应该产生任何类型的输出,但我想在最后显示一条消息(比如 magento 在保存后产生的消息等......)

【问题讨论】:

    标签: php magento model-view-controller


    【解决方案1】:

    你的控制器文件应该和下面一样

    class [namespace]_[module_name]_Adminhtml_[controller_name] extends Mage_Adminhtml_Controller_Action {
         public function indexAction() {
               // your stuff
         }
    }
    

    adminhtml.xml

    <unique_tag>
        <title>Manage Controller</title>
        <sort_order>10</sort_order>
        <action>adminhtml/[module_name]/[action]</action>
    </unique_tag>
    

    【讨论】:

    • 我把控制器命名为“ID_AcsCourier_Adminhtml_AcsCourierController”(文件名AcsCourierController.php),放到我模块的controllers/Adminhtml文件夹下,结果还是一样...
    • 请更新您的完整config.xml 文件和您的网址,这些网址将指向404
    【解决方案2】:

    您的模块 config.xml 和控制器类之间存在矛盾。您的模块中有 _Adminhtml 需要指向您的管理面板。但是您的控制器存在于 adminhtml 之外。如果您正在创建自定义模块,请从

    中删除 _adminhtml
    <modules>
        <id_acscourier before="Mage_Adminhtml">ID_AcsCourier</id_acscourier>
    <modules>
    

    或者 在 Adminhtml 中创建控制器...

    你很高兴!

    【讨论】:

    • 然后更改您的控制器类名称。复制粘贴我你的IndexController.php路径,我会告诉你正确的类名。
    • 它是 'ID/AcsCourier/controllers/Adminhtml/' 目前该文件被命名为 AcsCourierController,正如其他人所建议的,但我也尝试过 IndexController...
    • 在 IndexController 中有你的 indexAction 呈现一些布局。现在在您的 indexAction 中将其添加到第一行 echo "working"; exit; 并进行调试。然后点击 url http://yourdomain.com/id/acscourier/adminhtml/index 如果你看到消息“工作”那么一切都很好,直到你的控制器。
    • 仍然不行...我确定我遗漏了一些东西,但我不知道它是什么。我已经开发了比这更复杂的模块,没有一个让我如此艰难......
    • 如果你真的想解决这个问题,最好在magento.stackexchange.com上问这个问题。有专家解决。粘贴完整的代码并更简要地解释。祝你好运,编码愉快。
    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 2012-11-08
    • 2019-12-15
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2013-02-23
    相关资源
    最近更新 更多