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

Административная панель — это защищённый раздел сайта, где администраторы проекта могут изменять данные. Для реализации администраторской можно использовать EasyAdmin

    Источник: https://symfony.com/bundles/EasyAdminBundle/4.x/index.html Источник: https://symfony.com/doc/6.4/the-fast-track/ru/9-backend.html Источник: https://symfony.com/bundles/EasyAdminBundle/4.x/security.html#security-entire-backend
    Создание административной панели

    Symfony Components - пакеты, реализующие основные функции и абстракции низкого уровня, которые необходимы большинству приложений (маршрутизация, консоль, HTTP-клиент, почтовый клиент, кеш и др.)
    Symfony Bundles - пакеты, которые добавляют высокоуровневые возможности или обеспечивают интеграцию со сторонними библиотеками (пакеты в основном создаются сообществом). Один из таких пакетов (бандлов) является EasyAdmin

    #добавим бандл EasyAdmin в зависимости проекта:
    composer require easycorp/easyadmin-bundle #Или так symfony composer req "easycorp/easyadmin-bundle:^4" #Чистим кэш php bin/console cache:clear

    Для работы EasyAdmin требуются сущности Doctrine ORM (Doctrine ODM не поддерживается). EasyAdmin использует Twig Components для создания своего интерфейса.
    EasyAdmin автоматически генерирует админ-панель из определённых контроллеров в приложении.

    #Создание административной панели symfony console make:admin:dashboard

    Контроллеры, относящиеся к админ-панели, по умолчанию определяются в собственном пространстве имён App\Controller\Admin.
    Чтобы посмотреть созданную административную панель в браузере перейдите по пути /admin


    Источник: https://symfony.com/doc/6.4/the-fast-track/ru/9-backend.html

    CRUD-контроллер

    CRUD — это аббревиатура от "Create, Read, Update и Delete" ("Создать, Прочитать, Обновить, Удалить"), четырёх основных операций, которые можно проделать над любой сущностью

    #Сгенерировать CRUD-контроллер #Выберите 1, чтобы создать контроллер с CRUD-действиями symfony console make:admin:crud

    В результате будет сгенерирован контроллер src/Controller/Admin/ContentCrudController.php Остаётся добавить в src/Controller/Admin/DashboardController.php новые CRUD-интерфейсы конференций и комментариев в админпанель
    Для этого необходимо переопределить метод configureMenuItems()
    Загрузчик маршрутов создаст все необходимые маршруты для каждого контроллера CRUD.

    Дашборды

    Дашборды — это входные точки серверных приложений, которые связаны с одним или несколькими сущностями
    Для реализации дашборда сначала создается CRUD-контроллер для опрееделенной сущности
    Далее необходимо создать панель управления, к которой можно привязать контроллер CRUD сущности


    Дашборды — это обычные Symfony-контроллеры, поэтому вы можете делать с ними все то же, что и с обычными контроллерами, например внедрять сервисы
    Классы контроллеров панели управления должны реализовывать интерфейс EasyCorp\Bundle\EasyAdminBundle\Contracts\Controller\DashboardControllerInterface, который гарантирует наличие определенных методов в панели управления

    Источник: https://symfony.com/bundles/EasyAdminBundle/4.x/crud.html#crud-controller-pages

    # Чтобы быстро создать контроллер панели управления, выполните следующую команду php bin/console make:admin:dashboard

    Маршрут панели управления должен быть определен с помощью атрибута #[AdminDashboard]

    #[AdminDashboard(routePath: '/admin', routeName: 'admin')] class DashboardController extends AbstractDashboardController
    Конфигурация панели управления

    Конфигурация панели управления определяется в методе configureDashboard()


    Источник: https://symfony.com/bundles/EasyAdminBundle/4.x/dashboards.html

    public function configureDashboard(): Dashboard { return Dashboard::new() ->setTitle('Symfony Netbash'); }
    Настройка содержимого панели мониторинга

    Содержимое панели управления настраивается в методе index класса DashboardController
    Поскольку index() является частью интерфейса Dashboard, вы не можете добавлять к нему аргументы для внедрения зависимостей (например, ChartBuilderInterface в приведенном выше примере). Вместо этого внедряйте зависимости в конструктор контроллера или используйте имя метода, отличное от тех, что определены в интерфейсе.


    Источник: https://symfony.com/bundles/EasyAdminBundle/4.x/dashboards.html

    public function index(): Response { ... }
    Безопасность

    EasyAdmin использует Symfony Security для обеспечения безопасности
    Прежде чем ограничить доступ к панели управления, необходимо создать роли:
    https://symfony.com/doc/current/security.html#a-create-your-user-class
    И настроить брандмауэр:
    https://symfony.com/doc/current/security.html#a-authentication-firewalls


    Все маршруты, относящиеся к данной панели управления, имеют общий префикс (например, /admin).
    Это упрощает защиту бэкенда, поскольку вы можете использовать опцию access_control, чтобы указать Symfony, какие разрешения требуются при переходе по этому URL-адресу:

    # config/packages/security.yaml security: # ... access_control: # change '/admin' to the prefix used by your Dashboard URLs - { path: ^/admin, roles: ROLE_ADMIN } # ...

    В качестве альтернативы можно использовать атрибут #[IsGranted]. Однако это может быть неудобно, поскольку его нужно применять ко всем контроллерам панели управления и ко всем контроллерам CRUD


    Источник: https://symfony.com/bundles/EasyAdminBundle/4.x/security.html


    Источники
    Последнее изменение: 25.07.2026 09:21


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ