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'';