3

我知道我必须在这里遗漏一些明显的东西。但我就是看不到遗漏了什么。我通过使用以下代码的观察者在客户网格中添加了一个新的自定义批量操作:

public function addMassActions($observer) {
    $block = $observer->getEvent()->getBlock();
    if(get_class($block) =='Mage_Adminhtml_Block_Widget_Grid_Massaction'
        && $block->getRequest()->getControllerName() == 'customer')
    {
        $statuses = Mage::getSingleton('tmcustomerapproval/approvals')->getStatuses();
        $block->addItem('tmcustomerapproval', array(
            'label' => 'Set Customer Approval Status',
            'url' => Mage::getModel('adminhtml/url')->getUrl('adminhtml/customerapproval/index'),
            'additional'   => array(
                'visibility'    => array(
                    'name'     => 'status',
                    'type'     => 'select',
                    'class'    => 'required-entry',
                    'label'    => Mage::helper('tmcustomerapproval')->__('Status'),
                    'values'   => $statuses
                )
            )
        ));
    }
}

这工作正常。动作出现。但是,单击提交后,我得到前端 404。在 config.xml 中,我有:

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <Tweakmag_CustomerApproval after="Mage_Adminhtml">Tweakmag_CustomerApproval</Tweakmag_CustomerApproval>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>

控制器本身存储在:/app/code/community/Tweakmag/CustomerApproval/controllers/Customerapproval.php

并具有以下代码:

class Tweakmag_CustomerApproval_CustomerapprovalController extends Mage_Adminhtml_Controller_Action

{

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

}

我已清除缓存,登录/注销等帮助,非常感谢,所以我可以继续享受周末 :) 谢谢亚当

4

1 回答 1

0

Magento 中 404 路由的最常见原因是控制器文件命名错误。调试_validateControllerClassName方法app/code/core/Mage/Core/Controller/Varien/Router/Standard.php中的代码是查看 Magento 试图手动自动加载哪个控制器文件的最佳方法,这通常会指出您的文件命名不正确。

于 2013-05-26T16:58:07.373 回答