Я пытаюсь переопределить 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
Надеюсь это поможет.