-
В соответствии с задачей спроектируйте БД и создайте необходимые сущности используя команду
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). - Определите метод
configureFields
crud контроллера сущности в админке - укажите ваш список полей с указанием типов. - В каждой сущности реализуйте метод
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
. Остальные можно удалить.
- Поправьте также верстку сайта, чтобы новые страницы смотрелись аккуратно.