Php Magento无法通过OrderController创建MassAction。怎么了

Php Magento无法通过OrderController创建MassAction。怎么了,php,magento,Php,Magento,我对这个代码不起作用感到有点恼火。有什么建议吗 没有找到新创建的massAction,而是404 config.xml: <?xml version="1.0"?> <config> <modules> <SNH_ShipMailInvoice> <version>0.1.0</version> </SNH_ShipMailInvoice>

我对这个代码不起作用感到有点恼火。有什么建议吗

没有找到新创建的massAction,而是404

config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <SNH_ShipMailInvoice>
            <version>0.1.0</version>
        </SNH_ShipMailInvoice>
    </modules>

    <global>
        <events>
            <!-- Event to attach observer to -->
            <core_block_abstract_to_html_before>
                <observers>
                    <SNH_ShipMailInvoice>
                        <type>singleton</type>
                        <!-- Observer location (e.g. SW/GridExample/Model) -->
                        <class>SNH_ShipMailInvoice_Model_Observer</class>
                        <!-- Function to call -->
                        <method>addMassAction</method>
                    </SNH_ShipMailInvoice>
                </observers>
            </core_block_abstract_to_html_before>
        </events>
    </global>

    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <!-- Override Adminhtml module here. -->
                        <SNH_ShipMailInvoice before="Mage_Adminhtml">SNH_ShipMailInvoice</SNH_ShipMailInvoice>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>

</config>
现在,当我选择新创建的选项时,我收到一个404NotFound错误。URL类似于
admin/sales\u order/shipmailinvoice/key/

OrderController.php
文件位于
SNH/ShipMailInvoice/controllers/Adminhtml/Sales/OrderController.php

require_once('Mage/Adminhtml/controllers/Sales/OrderController.php');

class SNH_ShipMailInvoice_Adminhtml_Sales_OrderController extends Mage_Adminhtml_Sales_OrderController
{

    public function shipmailinvoiceAction()
    {
        // This should be called when the url has the pattern '*/*/attack' (as it does
        // when displaying my custom tab) however clicking this tab gives a 404.
        die('<h1>attackAction()</h1>');
    }
}
require_once('Mage/Adminhtml/controllers/Sales/OrderController.php');
类SNH\u ShipMailInvoice\u Adminhtml\u Sales\u OrderController扩展了Mage\u Adminhtml\u Sales\u OrderController
{
公共函数shipmailinvoiceAction()
{
//当url的模式为“*/*/attack”时,应该调用此函数(正如它所做的那样)
//当显示我的自定义选项卡)时,单击此选项卡将显示404。
死亡('attackAction()');
}
}
这里的案例很重要,请比较
admin/sales\u order/shipmailinvoice/key/

SNH/ShipMailInvoice/controllers/Adminhtml/Sales/OrderController.php
。您应该将url定义为
admin/sales\u order/shipMailInvoice/key/
,或者相应地重命名文件和类

文件位置和XML命名非常具体

在config.xml中:


我将url更改为:ShipMailInvoice(每个单词的上限),它解析为admin/sales\u order/ShipMailInvoice/key/仍然是404错误。嗯,您确定模块中有适合您操作的
部分吗
adminhtml.xml
?此外,在添加此类部分后,您必须注销并登录到管理员,因为当前登录用户的acl存储在session.fixed!路由器应该是/app/code/local/SNH/ShipMailInvoice/controllers/Adminhtml/Sales/OrderController.php中的SNH\u ShipMailInvoice\u Adminhtml和OrderController
require_once('Mage/Adminhtml/controllers/Sales/OrderController.php');

class SNH_ShipMailInvoice_Adminhtml_Sales_OrderController extends Mage_Adminhtml_Sales_OrderController
{

    public function shipmailinvoiceAction()
    {
        // This should be called when the url has the pattern '*/*/attack' (as it does
        // when displaying my custom tab) however clicking this tab gives a 404.
        die('<h1>attackAction()</h1>');
    }
}
<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <!-- Override Adminhtml module here. -->
                    <SNH_ShipMailInvoice_Adminhtml before="Mage_Adminhtml">SNH_ShipMailInvoice_Adminhtml</SNH_ShipMailInvoice_Adminhtml>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
class SNH_ShipMailInvoice_Adminhtml_Sales_OrderController extends Mage_Adminhtml_Sales_OrderController
{

    public function shipmailinvoiceAction()