2015-02-16 5 views

ответ

3

Как указано Pritesh, вы не можете *.

Я вижу несколько способов для достижения результата:

  1. Вы можете создать новый контроллер, который расширяет ваш контроллер test.php, и что вместо вызова; для достижения этого контроллер никогда не должен использовать JPATH_COMPONENT, и вам придется переопределить представление, а также указать нужный компонент.

  2. Добавьте специальную задачу к вашему виду и перехватите ее с системным плагином в OnAfterRoute(). Вы не будете прикасаться к исходному контроллеру, но ваш плагин будет запускаться перед исходным контроллером, чтобы он мог действовать, манипулировать входными и выходными данными и в конечном итоге избегать вызова исходного контроллера.

-

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

Очень часто я должен достичь именно этого результата. И 90% времени я достигаю этого в системном плагине. В случае улучшений я вношу код обратно оригинальному разработчику, который обычно интегрирует функции в следующей версии. Не забудьте сообщить оригинальным разработчикам, вы поможете улучшить их продукты и сэкономить время.

  • На самом деле вы можете переопределить довольно значительную часть ядра, загрузив класс перед выполнением Joomla; это ограничивается неосновными классами, но это возможно. Вот что я имел в виду в n.2
+0

Wowwww .. !!! Я очень ценю от вас ответ @Riccardo Zorn. вы правы, мы расширим наш оригинальный контроллер, и плагин будет работать для нашего нового контроллера. –

+0

@ riccardo-zorn Я полный новичок в разработке Joomla, и поскольку ваше второе решение звучит как что-то, что я мог бы сделать для очень похожей ситуации, с которой я столкнулся, я не понимаю, как я могу определить в 'onAfterRoute' для запуска только когда я перехожу на конкретную страницу определенного компонента, вы можете указать мне в правильном направлении? –

+0

жаль, что это действительно неправильное место, чтобы спросить, есть много вопросов, подробно объясняющих ваши варианты, во всяком случае, что-то вроде JFactory :: getApplication() -> input-> get ('Itemid') даст вам пункт меню Я бы; опция будет содержать имя компонента –

2

Мы не можем переопределить контроллер и модель в joomla, мы переопределим только виды компонента.

+0

Есть ли другой способ настроить функциональность контроллера компонента? –

Смежные вопросы