Skip to content

Instantly share code, notes, and snippets.

@positron48
Last active April 19, 2021 19:26
Show Gist options
  • Save positron48/b9a71ee212d5d4c31420cf082456c9d5 to your computer and use it in GitHub Desktop.
Save positron48/b9a71ee212d5d4c31420cf082456c9d5 to your computer and use it in GitHub Desktop.

Практическая работа по Symfony. Часть 2

Создание сущностей БД

  1. В соответствии с задачей спроектируйте БД и создайте необходимые сущности используя команду symfony console make:entity. Все типа данных и связи должны быть проставлены. Для связи таблиц между собой используйте соответствующие типы данных - ManyToOne / OneToMany / ManyToMany / OneToOne, либо укажите тип relation, чтобы запустить мастер.

  2. Сгенерируйте и примените миграции.

Административная панель

Для реализации административной панели будем использовать предназначенный для этого бандл - EasyAdmin

  1. Устанавливаем бандл symfony composer require admin
  2. Создаем dashboard в админке: symfony console make:admin:dashboard
  3. Генерируем crud для наших сущностей: symfony console make:admin:crud
  4. Кастомизируйте метод index вашего контроллера админки в соответствии с инструкцией на странице dashboard'a (по умолчанию /admin).
  5. Определите метод configureFields crud контроллера сущности в админке - укажите ваш список полей с указанием типов.
  6. В каждой сущности реализуйте метод public function __toString() - метод должен преобразовывать объект в имя. Для поста блога остаточно возвращать заголовок, для комментария - автора или первые слова из текста. Это нужно для вывода списка связанных сущностей в админке. Например, для сущности Post в блоге, заголовок которого содержится в поле title метод может выглядит следующим образом:
public function __toString()
{
    return $this->title;
}
  1. Закройте доступ в админку только для пользователей с административными правами. Для того достаточно раскомментировать соответствующую строку в блоке access_control файла config/packages/security.yaml. Убедитесь, что защита работает.

  2. Выведите в шапку страницы ссылку на админку, если пользователь имеет права администратора.

Контроллеры и шаблоны страниц

Если вы уже знаете, как работают контроллеры и формы симфони - можете реализовать оставшуюся логику используя генератор контроллеров и форм (make:controller и make:form). Мы же будем использовать make:crud (от create, read, update, delete) для генерации всего набора элементов для полноценного управления сущностью.

  1. Установите расширение annotations - symfony composer require annotations

  2. Запустите команду symfony console make:crud, укажите сущность, для которой вы хотите сгенерировать crud. На выходе вы получите набор шаблонов, контроллер с несколькими экшнами и класс формы. Изучите добавленные файлы.

  3. Скорректируйте в соответствии с вариантом полученную функциональность. Так как полное редактирование данных у нас доступно и админки - в основном разделе нужно оставить только необходимые функции - просмотр списка элементов, детальную страницу и добавление комментария (зависит от варианта).

Для основной сущности нам по сути нужны только экшны index и show. Остальные можно удалить.

  1. Поправьте также верстку сайта, чтобы новые страницы смотрелись аккуратно.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment