Вопрос

В частности, я заинтересован в потенциально переоценке _isAllowed() так что это по умолчанию false вместо true. Анкет Большинство вещей, которые я обнаружил, связано с переопределяющимися контроллерами, касающиеся того, как переопределить контроллер конкретного маршрута, но я не думаю, что это применимо здесь.

Причина, по которой я хочу сделать это, заключается в том, что в случае, если сторонние модули, которые я не разработал _isAllowed() В своих контроллерах они по умолчанию не будут доступны.

Я знаю, что это довольно низкоуровневое изменение, которое можно внести, и может сломать вещи в ядре, и в этом случае я не смогу сделать это. Но я, очевидно, проверю это, как только я его реализую.

Я немного посмотрел на логику внутри Mage_Core_Controller_Varien_Router_Standard::match() Но не видя ничего, что помогает.

Это было полезно?

Решение

Это класс, который расширяется многие другие классы, поэтому его нельзя легко перегрузить (аналогично базовым моделям или абстрактным классам).

Если вы действительно хотите изменить это поведение, вам придется скопировать и вставить весь источник и поместить его внутрь app/code/local/Mage/Adminhtml/Controller/Action.php.

Рекомендуется следовать «правильной» соглашению Magento и реализовать _isAllowed Метод в ваших пользовательских классах контроллера. Для защиты сторонних модулей приведенный выше подход будет работать, но вы намеренно будут улучшаться. Подход «чистого» будет таким, как вы упомянули, чтобы переписать контроллер каждого конкретного маршрута. Это может включать в себя много усилий и времени, вы должны правильно провести черту для каждого проекта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top