-
В соответствии с задачей спроектируйте БД и создайте необходимые сущности используя команду
symfony console make:entity. Все типа данных и связи должны быть проставлены. Для связи таблиц между собой используйте соответствующие типы данных -ManyToOne/OneToMany/ManyToMany/OneToOne, либо укажите тип relation, чтобы запустить мастер. -
Сгенерируйте и примените миграции.
Для реализации административной панели будем использовать предназначенный для этого бандл - EasyAdmin
- Устанавливаем бандл
symfony composer require admin - Создаем dashboard в админке:
symfony console make:admin:dashboard - Генерируем crud для наших сущностей:
symfony console make:admin:crud - Кастомизируйте метод
indexвашего контроллера админки в соответствии с инструкцией на странице dashboard'a (по умолчанию /admin). - Определите метод
configureFieldscrud контроллера сущности в админке - укажите ваш список полей с указанием типов. - В каждой сущности реализуйте метод
public function __toString()- метод должен преобразовывать объект в имя. Для поста блога остаточно возвращать заголовок, для комментария - автора или первые слова из текста. Это нужно для вывода списка связанных сущностей в админке. Например, для сущностиPostв блоге, заголовок которого содержится в полеtitleметод может выглядит следующим образом:
public function __toString()
{
return $this->title;
}
-
Закройте доступ в админку только для пользователей с административными правами. Для того достаточно раскомментировать соответствующую строку в блоке
access_controlфайлаconfig/packages/security.yaml. Убедитесь, что защита работает. -
Выведите в шапку страницы ссылку на админку, если пользователь имеет права администратора.
Если вы уже знаете, как работают контроллеры и формы симфони - можете реализовать оставшуюся логику используя генератор контроллеров и форм (make:controller и make:form).
Мы же будем использовать make:crud (от create, read, update, delete) для генерации всего набора элементов для полноценного управления сущностью.
-
Установите расширение annotations -
symfony composer require annotations -
Запустите команду
symfony console make:crud, укажите сущность, для которой вы хотите сгенерировать crud. На выходе вы получите набор шаблонов, контроллер с несколькими экшнами и класс формы. Изучите добавленные файлы. -
Скорректируйте в соответствии с вариантом полученную функциональность. Так как полное редактирование данных у нас доступно и админки - в основном разделе нужно оставить только необходимые функции - просмотр списка элементов, детальную страницу и добавление комментария (зависит от варианта).
Для основной сущности нам по сути нужны только экшны index и show. Остальные можно удалить.
- Поправьте также верстку сайта, чтобы новые страницы смотрелись аккуратно.