Я хочу переопределить контроллер внутри компонентаJoomla - Как заменить компонентный контроллер?
ie;
Путь к файлу: компоненты/com_test/Контроллеры/test.php
как переопределить test.php?
Я хочу переопределить контроллер внутри компонентаJoomla - Как заменить компонентный контроллер?
ie;
Путь к файлу: компоненты/com_test/Контроллеры/test.php
как переопределить test.php?
Как указано Pritesh, вы не можете *.
Я вижу несколько способов для достижения результата:
Вы можете создать новый контроллер, который расширяет ваш контроллер test.php, и что вместо вызова; для достижения этого контроллер никогда не должен использовать JPATH_COMPONENT, и вам придется переопределить представление, а также указать нужный компонент.
Добавьте специальную задачу к вашему виду и перехватите ее с системным плагином в OnAfterRoute()
. Вы не будете прикасаться к исходному контроллеру, но ваш плагин будет запускаться перед исходным контроллером, чтобы он мог действовать, манипулировать входными и выходными данными и в конечном итоге избегать вызова исходного контроллера.
-
при редактировании оригинального контроллера может показаться, как вариант, игнорируйте его: оригинальный компонент будет обновляться время от времени, и вы вступаете кошмар обслуживания.
Очень часто я должен достичь именно этого результата. И 90% времени я достигаю этого в системном плагине. В случае улучшений я вношу код обратно оригинальному разработчику, который обычно интегрирует функции в следующей версии. Не забудьте сообщить оригинальным разработчикам, вы поможете улучшить их продукты и сэкономить время.
Мы не можем переопределить контроллер и модель в joomla, мы переопределим только виды компонента.
Есть ли другой способ настроить функциональность контроллера компонента? –
Wowwww .. !!! Я очень ценю от вас ответ @Riccardo Zorn. вы правы, мы расширим наш оригинальный контроллер, и плагин будет работать для нашего нового контроллера. –
@ riccardo-zorn Я полный новичок в разработке Joomla, и поскольку ваше второе решение звучит как что-то, что я мог бы сделать для очень похожей ситуации, с которой я столкнулся, я не понимаю, как я могу определить в 'onAfterRoute' для запуска только когда я перехожу на конкретную страницу определенного компонента, вы можете указать мне в правильном направлении? –
жаль, что это действительно неправильное место, чтобы спросить, есть много вопросов, подробно объясняющих ваши варианты, во всяком случае, что-то вроде JFactory :: getApplication() -> input-> get ('Itemid') даст вам пункт меню Я бы; опция будет содержать имя компонента –