我知道我一定错过了一些明显的东西。但我就是看不出少了什么。我通过一个观察者在客户网格中添加了一个新的自定义质量动作,代码如下:
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();
}
}
我已经清除缓存,登录/退出等。帮助,非常感谢,所以我可以继续享受周末:)谢谢亚当
Magento中404路由最常见的原因是控制器文件命名错误。调试_validateControllerClassName
方法app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
中的代码是查看Magento试图手动自动加载哪个控制器文件的最佳方法,这通常会指出您的文件如何被错误地命名。