Переопределение контроллера Magento Enterprise - PullRequest
2 голосов
/ 04 ноября 2011

Я пытаюсь переопределить Enterprise / CatalogEvent / controllers / 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>

Ответы [ 2 ]

3 голосов
/ 06 ноября 2011

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

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

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

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

0 голосов
/ 19 августа 2013

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

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

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

Это в Magento Enterprise v1.12.0.2

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

...