Сначала необходимо создать файл controller.php
в папке с компонентом в открытой части сайта:
/components/com_simple/controller.php
Для работы контроллера необходимо подключить стандартный класс контроллера:
jimport('joomla.application.component.controller');
Далее создается класс с именем компонента:
class SimpleController extends JController
К примеру, пользователь вводит в строке браузера:
http://localhost/joomla17/index.php?option=com_simple&task=delete
Для того, чтобы обработать task, т.е. задачу, требуется создать функцию в controller.php
с аналогичным именем:
class SimpleController extends JController { public function delete() { echo "Удаление"; } }
На экране пользователь в рамках использованного шаблона для отображения сайта увидит сообщение "Удаление".
Однако, я не указал, как будет получено значение task
и как контроллер взаимодействует с компонентом.
В файл компонента в открытой части simple.php
добавляется аналогичная запись импорта класса контроллера:
jimport('joomla.application.component.controller');
Далее получается контроллер для нашего компонента по имени:
$controller = JController::getInstance('Simple');
После в контроллер сообщается значение task
:
$controller->execute(JRequest::getCmd('task'));
В завершение прописывается строка, отвечающая за перенаправление:
$controller->redirect();
Принцип работы
При запуске компонента вызывается основной файл simple.php
, в котором запрашивается контроллер. Контроллер получает значение task
и вызывает соответствующую функцию. При необходимости осуществляется перенаправление.
Если же в контроллере нет соответствующей task функции, то работа компонента прекращается и исполнение заканчивается выводом на экран пользователя ошибкой 500.