Когда создана базовая структура расширения, следующим шагом, как правило, является регистрация своих контроллеров и добавление пунктов меню в панель управления. Для этого необходимо добавить некоторые дополнительные свойства в определение модуля в вашем index.php.
Добавление контроллера
Контроллер в Pagekit - это простой PHP класс. Любой публичный метод, названный должным образом (например, someAction()
) будет смонтирован роутером Pagekit (например, /todo/some
).
Создайте файл packages/pagekit/todo/src/Controller/TodoController.php со следюущим кодом:
<?php
namespace Pagekit\Todo\Controller;
/**
* @Access(admin=true)
*/
class TodoController
{
public function indexAction()
{
return "Yay.";
}
}
Для ограничения доступа к панели управления и для монтирования контроллера к URL панели управления, мы используем аннотацию @Access(admin=true)
. Аннотации - это ключевые слова, которые размещаются в блоках комментариев над классом или методом. Подробнее об аннотациях.
Для использования этого контроллера мы должны автозагрузить наше пространство имён и монтировать контроллер к маршруту (route). Добавьте следующие свойства в конфигурационный массив вашего index.php:
// ...
// массив пространств имён для автозагрузки из данных папок
'autoload' => [
'Pagekit\\Example\\' => 'src'
],
// массив маршрутов
'routes' => [
// идентификатор для ссылки на маршрут из вашего кода
'@todo' => [
// к какому пути должно быть смонтировано это расширение
'path' => '/todo',
// какой контроллер монтировать
'controller' => 'Pagekit\\Todo\\Controller\\TodoController'
]
],
// ...
Если вы не можете получить доступ к вашему маршруту, очистите кэш. Pagekit кэширует маршруты для обеспечения производительности.
Панель отладки
Чтобы увидеть все зарегистрированные маршруты во время разработки, полезно включить панель отладки в системных настройках Pagekit. Панель отладки появляется внизу экрана и показывает все зарегистрированные маршруты, а также другую полезную информацию.
Не забудьте выключить её на живом сайте.
Добавление пункта меню
Для добавления пункта меню используйте свойство menu
в определении модуля. Добавьте следующее в index.php:
// ...
'menu' => [
'example' => [
'label' => 'ToDo',
'icon' => 'app/system/assets/images/placeholder-icon.svg',
'url' => '@todo',
]
],
// ...
Обновите бэкенд Pagekit и вы увидиите новый пункт меню, которые ссылается на маршрут @todo
.
Это основной воркфлоу контроллеров и маршрутизации. Для рендеринга файлов представления вместо чистых строк, вы должны изменить то, что возвращают action
контроллера. Это мы рассмотрим в следующем видеоуроке.