Контроллер контроллера Magento Enterprise

Я пытаюсь переопределить Enterprise / CatalogEvent / контроллеры / Adminhtml / Catalog / EventController.php.

Проблема заключается в файле config.xml. Как я могу выполнить соглашение об именах Magento. Ниже приведен файл config.xml.

<admin> <routers> <adminhtml> <args> <modules> <Mynamespace_catalogevent before="Enterprise_CatalogEvent">Mynamespace_CatalogEvent_Adminhtml</Mynamespace_catalogevent> </modules> </args> </adminhtml> </routers> </admin> 

Основываясь на, казалось бы, правильном xpath и атрибуте выше, вам нужно будет иметь файл EventController.php в Mynamespace / CatalogEvent / controller / Adminhtml /.

Этот стиль перезаписи является последним в Magento (устаревшие предыдущие методы). Фактически, вы вводите каталог перед каталогом Enterprise, и там начинается маршрутизация. Поскольку определения класса контроллера недоступны для автозагрузчика, они включаются путем принятия аргумента модуля и перевода его в каталог. В основной маршрутизации Magento, хотя файл контроллера определяется через Mage_Core_Controller_Varien_Router_Standard::getControllerFileName() и Mage_Core_Model_Config::getModuleDir() (среди прочих). То, как он оценивается, означает, что после двух уровней каталога в вашем модуле (например, Mynamespace / CatalogEvent) следующий каталог будет «контроллерами».

Убедитесь, что определение класса EventController расположено в соответствии с вышесказанным, что ваше действие соответствует действию, которое вы переопределяете, и что ваше имя класса соответствует вашему пути, и вам будет хорошо идти.

Сложно то, что если что-то «отключено» от вашей структуры и синтаксиса (за исключением неправильного имени класса), маршрутизатор в конечном итоге решит контроллер действия Enterprise.

У меня была аналогичная проблема, и простым решением моей проблемы было убедиться, что часть _Adminthml класса была включена как в мой локальный контроллер, так и в контроллер, который я переопределял. В твоем случае:

 <Mynamespace_catalogevent before="Enterprise_CatalogEvent_Adminhtml"> Mynamespace_CatalogEvent_Adminhtml </Mynamespace_catalogevent> 

В вашем примере отсутствует _Adminhtml атрибута before .

Это на Magento Enterprise v1.12.0.2

Надеюсь это поможет.