sonatadoctrineormadminbundle sonataadminbundle symfony symfony-sonata sonata-admin

sonataadminbundle - symfony 4 admin



Sonataadminbundle: sección de administración múltiple para la misma entidad (3)

Tengo clase de entidad Page con type=integer columna type=integer . Cuando lo hago:

<service id="sonata.admin.pages" class="Main/ProgramBundle/Admin/PageAdmin"> <tag name="sonata.admin" manager_type="orm" group="dashboard" label="Pages"/> <argument /> <argument>Main/ProgramBundle/Entity/Page</argument> <argument>SonataAdminBundle:CRUD</argument> </service> <service id="sonata.admin.groups" class="Main/ProgramBundle/Admin/GroupAdmin"> <tag name="sonata.admin" manager_type="orm" group="stories" label="Groups"/> <argument /> <argument>Main/ProgramBundle/Entity/Page</argument> <argument>SonataAdminBundle:CRUD</argument> </service>

En resumen, ambas secciones funcionan en la misma entidad, excepto que cada una tiene consultas y formularios diferentes.

Pero lo que sucede es que la sonata siempre ejecuta Admin / GroupAdmin, incluso si selecciono PageAdmin. ¿Como hacer esto?


Ciertamente, usted encontró su solución, pero otra forma de hacerlo sería crear una clase principal y heredar usando el mapeo de herencia . Entonces puede tener un repositorio diferente y la administración de sonata no funcionará de manera diferente.


No tengo suficiente reputación para agregar un comentario a la respuesta anterior, pero falta la siguiente información:

También debe definir un valor único de $ baseRouteName además de $ baseRoutePattern en sus clases de administrador:

protected $baseRouteName = ''admin_vendor_bundlename_adminclassname''; protected $baseRoutePattern = ''unique-route-pattern'';

Solo necesita hacer esto a una clase, pero considere hacerlo en ambas para dejarlo claro lo que está pasando.


Sonata crea rutas automáticamente basadas en los nombres de sus entidades. Así que si tienes 2 clases de administrador, hay un conflicto. Tienes que configurar diferentes patrones de ruta.

Agregue esta propiedad a Main / ProgramBundle / Admin / GroupAdmin.php:

protected $baseRoutePattern = ''page-group'';