Переопределить переопределенный контроллер Adminhtml

Я пытаюсь переопределить контроллер Adminhtml сообщества, который уже переопределяет «Mage_Adminhtml».

Модуль сообщества A с первым переопределением

...
<admin>
 <routers>
  ...
   <adminhtml>
    <args>
     <modules>
      <ModuleA before="Mage_Adminhtml">NameSpaceA_ModuleA_Adminhtml</ModuleA>
     </modules>
    </args>
   </adminhtml>
 </routers>
</admin>
...

Я хотел бы внести некоторые изменения, так что.. Локальный модуль B

...
<admin>
 <routers>
  ...
   <adminhtml>
    <args>
     <modules>
      <NameSpaceB_ModuleB before="NameSpaceA_ModuleA_Adminhtml">NameSpaceB_ModuleB_Adminhtml</NameSpaceB_ModuleB>
     </modules>
    </args>
   </adminhtml>
 </routers>
</admin>
...

Локальный модуль B зависит от модуля A (тег <depends>), кэш выключен

Используется локальный модуль B, я уже переопределяю некоторые блоки и модели Adminhtml

Локальный контроллер никогда не вызывается, и я пробовал много вещей, но безрезультатно.

Большое спасибо за любую помощь


person apouey    schedule 03.11.2014    source источник


Ответы (1)


Ваш локальный config.xml должен быть таким:

...
<admin>
 <routers>
  ...
   <adminhtml>
    <args>
     <modules>
      <NameSpaceB_ModuleB before="NameSpaceA_ModuleA">NameSpaceB_ModuleB_Adminhtml</NameSpaceB_ModuleB>
     </modules>
    </args>
   </adminhtml>
 </routers>
</admin>
...

Затем вы должны назвать свой класс контроллера аналогично расширенному классу контроллера. Вот пример.

Расширенный класс:

NameSpaceA_ModuleA_Adminhtml_CoolController

Расширение класса (ваш контроллер):

NameSpaceB_ModuleB_Adminhtml_CoolController

Обратите внимание на часть имени класса «CoolController».

Кроме того, в вашем классе NameSpaceB_ModuleB_Adminhtml_CoolController вам необходимо потребовать расширенный класс и расширить его:

require_once "NameSpaceA/ModuleA/Adminhtml/CoolController.php";

class NameSpaceB_ModuleB_Adminhtml_CoolController 
    extends NameSpaceA_ModuleA_Adminhtml_CoolController {

    /* your code*/

}
person ermannob    schedule 04.03.2015