Модуль «Заказать звонок» на OctoberCMS с помощью плагина Builder
Данная заметка посвящена основам разработки плагина для OctoberCMS с помощью плагина RainLab.Buider, по сути это очень упрощённый вариант howto на основе видео с официальной документации, с небольшими отступлениями. Для примера мы сделаем модуль обратной связи (очень простой).
Что должен делать данный модуль:
- Создавать записи «Заказать звонок»
- Валидировать ввод
- Отображать в админке список заказанных звонков
- Помечать в админке обработанные звонки
- Реализовать контроль частоты отправки заказов (как защита от спамеров), сделать так что-бы звонок могли заказать не чаще чем один раз в час.
Итак начнём. На данном этапе у вас уже должен быть установлен RainLab.Buider и создан новый пустой плагин:
Обратите внимание на нейминг, используйте рекомендации из плейсхолдеров.
Создаём базу данных для плагина
Нажимаем save и получаем вот такую миграцию
Создаём модель Calls
Создаём интерфейс «forms» для модели
Создаём поля ввода, первое поле ввода типа string для поля в базе данных phone
Так-же делаем вот такой элемент управления, типа переключатель. Так мы будем помечать обработанные заказы звонков.
В принципе для нашего модуля больше ничего пока не надо, при необходимости можно всегда зайти и добавить новые поля или иные элементы управления записью в базе данных.
Создаём список для модели
Создаём backend menu
Обратите внимание на то что в атрибуте URL пока стоит слеш, чуть позже мы его поменяем, а точнее после создания контроллера.
Создаём контроллер
Далее нажимаем save и перезагружаем админку и снова заходим в backend menu
Тут в атрибуте URL только начинаем вводить calls как будет автоматически предложен вариант полного url «mcmraak/feedback/calls». Сохраняем и снова перезагружаем админку (Что-бы заработала кнопка в меню)
Нажимаем на кнопку в главном меню, и проверяем работу административной части плагина
Для примера я создал две записи, в одной я сделал отметку «Обработано» в другой не сделал, после чего в списке я вижу сухие цифры 0 и 1
Что-бы это выглядело более привлекательно, я создам для этой ячейки списка свой Partial, для этого зайдем в редактирование списка для модели и заменим тип поля с Number на Partial
Теперь если попытаться зайти в админку нашего плагина, вместка списка заказанных звонков мы увидим исключение OctoberCMS которое говорит нам что «The partial ‘_active.htm’ is not found.»
Всё правильно, потому что самого партиала ещё не создано. Создадим файл _active.htm по адресу /plugins/[имя_автора]/[имя_плагина]/controllers/[имя_контроллера]/_active.htm
В моём случае /plugins/mcmraak/feedback/controllers/calls/_active.htm
Содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php if($value){ echo "<span style='color: green; font-size: 50px; position: absolute; margin-top: -29px;'>●</span>"; } else { echo "<span style='color: red; font-size: 50px; position: absolute; margin-top: -29px;'>●</span>"; } |
Заметка: Можно получить данные записи в переменной $value, но так-же можно получить эти-же данные из объекта $record вот так: $record->active (в объекте $record присутствуют так-же данные из других полей).
Я думаю этот код особо не нужно комментировать, тут написано что если $record->active равно нулю (т.е. false) нужно рисовать красный кружочек, или рисовать зелёный. Так намного нагляднее и в то-же время показывает вам как можно оформлять ячейки списка собственным кодом.
Результат:
Итак бекенд-часть готова, мы видим список, и можем создавать, изменять и удалять записи. Так-же мы можем сортировать список по нужным колонкам и производить поиск.
В следующей части я покажу как сделать для этого фронт-энд.