Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Урок 3. Точка входа компонента Joomla. Первый вид

Приветствую вас следующем уроке мини-курса по созданию собственного несложного компонента для системы управления контентом Джумла. На прошлом видео-уроке мы с вами установили заготовку будущего компонента MVC, и сейчас начинаем описывать функционал компонента новостей. И начинаем с точки входа в данный компонент.



Переходим в исходных файлах CMS Joomla на сервере (сейчас работаем уже с установленным компонентом). Переходим в каталог administrator (разработку начинаем с панели администратора компонента). Далее каталог component – это каталог, в котором установлены все компоненты панели администратора. И соответственно папка com_news. Это компонент, с которым мы работаем.

Открываем файл news.php - это точка входа в компонент новостей. Открываем тут <?php, и первым делом мы должны проверить, определена ли системная константа с именем _JEXEC, используя функцию defined:

defined('_JEXEC') or exit();

Данная константа нужна для предотвращения прямого доступа к файлам CMS Джумла, и данная проверка должна быть прописана в каждом PHP файле CMS Joomla. Константа _JEXEC определяется в точке входа в панель администратора, т.е. в файле index.php каталога administrator. Давайте откроем данный файл в текстовом редакторе, и на двадцать третьей строке вы увидите определение данной константы. То есть, если мы попытаемся обратиться к файлу news.php напрямую, если в браузере пропишем путь к данному файлу, то сразу же отработает данная строка: данная константа в данном файле не определяется, и сразу же будет выполнен выход из приложения. Если же мы обращаемся к компоненту, то в любом случае обращение к компоненту выполняется из главной точки входа из файла index.php, в котором данная константа определяется, а значит функция exit() не выполняется.

Дальше создаем временную переменную $controller, в которую мы запишем объект контроллера компонента новостей. Того контроллера, который и выполнит поставленную задачу. Для получения данного объекта мы обращаемся к родительскому классу JControllerLegacy - это родительский контроллер для всех контроллеров CMS Joomla. И вызываем у класса данного контроллера метод getInstance(). Данный метод реализует шаблон проектирования синглтон и возвращают в качестве результата объект класса, часть имени которого мы передаем данному методу. В качестве параметра я передаю часть имени строку News. То есть в этом случае метод getInstance() вернет объект класса news контроллер NewsController. Данный класс должен быть описан в файле controller.php.

То есть News - это имя контроллера, а соответственно добавочная приставка Controller, - это как бы общая часть, которая указывает принадлежность этого класса к классам контроллеров. Соответственно, если сейчас мы сохраним изменения и попытаемся используя функцию print_f() распечатать содержимое переменной $controller, то в браузере в компоненте новостей мы видим ошибку: «Неверный класс контроллера».

Потому, как метод getInstance() пытается найти данный класс в файле controller.php, а значит в данном файле мы должны описать указанный class. То есть сейчас мы из точки входа уже попадаем в контроллер. Мы получаем объект данного контроллера и создаем класс под названием NewsController. Если это контроллер, он должен наследовать функционал родительского класса JControllerLegacy. Таким образом мы создали объект главного контроллера компонента com_news.

И сейчас в панели администратора, если мы обновим информацию, то мы видим что ошибки нет, так как в переменную контроллер попал объект класса NewsController. Соответственно получив объект контроллера мы должны выполнить поставленную пользователем задачу, А значит обращаемся к переменной $controller и вызываем на исполнение метод execute()


Для того, чтобы полностью разобраться с тем, как создать компонент для CMS Joomla, а точнее, как реализовать точку входа, далее определить контроллер, который будет выполнять поставленные задачи, а также, как создать главную страницу расширения – «Менеджер новостей», в котором в будущем будут отображаться добавленный новости и о том, как создать панель управления в создаваемом компоненте, смотрите видео-урок канала WebForMySelf на YouTube:

Продолжение → «Урок 4. Страница добавления нового элемента»
Ссылка на оглавление со списком всех уроков мини-курса WebForMySelf «Создание компонента для Joomla 3 за два вечера»

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Войдите чтобы комментировать

Обсудить эту статью

INFO: Вы отправляете сообщение как 'Гость'