Проблема перезаписи Mage Adminhtml
Это сводит меня с ума. Что я хочу сделать, так это создать новое действие в контроллере:
Mage/Adminhtml/controllers/Sales/OrderController.php
Я переписал, используя это:
<admin>
<routers>
<adminhtml>
<args>
<modules>
<mymodule_resetdownloads before="Mage_Adminhtml">Mymodule_Resetdownloads_Adminhtml</mymodule_resetdownloads>
</modules>
</args>
</adminhtml>
</routers>
</admin>
И класс такой:
require_once (Mage::getModuleDir('controllers','Mage_Adminhtml').DS.'Sales/OrderController.php');
class Mymodule_Resetdownloads_Adminhtml_Sales_OrderController extends Mage_Adminhtml_Sales_OrderController
{
public function resetAction() {
$id = $this->getRequest()->getParam('id');
$this->loadLayout();
$this->renderLayout();
echo $id;
}
}
Теперь перезапись работает, и я знаю это, потому что, если я создам другое действие, такое как viewAction(), оно использует мое. Но моя проблема в том, что я не могу создать новый. Есть идеи, почему? Я делаю что-то не так? Я не получаю никаких ошибок от того, что я сделал, это просто перенаправляет меня на приборная панель.
3 answers
Похоже, проблема связана с вашим URL-ключом, попробуйте добавить его в свой контроллер (затем перейдите в раздел Администратор -> Продажи -> Заказ и нажмите на любой заказ #)
Чтобы получить URL-адрес администратора, используйте
Mage::helper('adminhtml')->getUrl("adminhtml/sales_order/mytest", array('id'=> 1));
Попробуйте
public function mytestAction(){
echo 'mytestAction()';
}
//
//to be deleted
public function viewAction(){
echo '<a href ="' . Mage::helper('adminhtml')->getUrl("adminhtml/sales_order/mytest", array('order_id'=> 1)) .'">mytest action</a>';
}
Вам нужно, чтобы ваш контроллер расширил исходный контроллер: Mage_Adminhtml_Sales_OrderController
вместо Mage_Adminhtml_Controller_Action
Попробуйте:
<modules>
<Mymodule_Resetdownloads before="Mage_Adminhtml">Mymodule_Resetdownloads_Adminhtml</Mymodule_Resetdownloads>
</modules>