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