Как получить службу администратора сущности с помощью Sonata?

Скажем, я делаю запрос для группы разных смешанных объектов. Представьте, что все эти сущности находятся в одной таблице наследования, а существует дюжина различных типов.

Я хочу создать ссылку на страницу редактирования сонаты для любого из этих объектов.

Я могу получить полное имя класса для объекта Entity с помощью функции get_class. Я не могу придумать способ передать этот класс Sonata и вернуть объект службы или идентификатор службы администратора, представляющего этот класс.

Если мне это удастся, я могу использовать метод generateUrl класса Admin, чтобы создать ссылку на форму редактирования.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
239
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Все административные службы хранятся в пуле.

Github: https://github.com/sonata-project/SonataAdminBundle/blob/3.x/src/Admin/Pool.php

Этот пул доступен через службу sonata.admin.pool.

Ваш магический метод находится внутри этой службы:

$admin = $this->get('sonata.admin.pool')->getAdminByClass('YOUR CLASS NAME');

Другие вопросы по теме