Diferentes listas para un modelo en el paquete de administración de sonata

¿Cómo puedo crear dos listas diferentes para un modelo? En mi caso tengo un modelo de Usuario. Y para este modelo en mi tablero debo tener dos listas: Miembros y Administradores. Creo para los miembros:

sonata.admin.members:
    class: Project\AdminBundle\Admin\MemberAdmin
    tags:
      - { name: sonata.admin, manager_type: orm, model_manager: sonata.admin.manager.project, group: Members, label: Members}
    arguments: [null, %fos_user.model.user.class%, SonataAdminBundle:CRUD]
    calls:
      - [setTranslationDomain, [ProjectUserBundle]]

y para los administradores:

sonata.admin.user:
    class: Project\UserBundle\Admin\UserAdmin
    tags:
      - { name: sonata.admin, manager_type: orm, model_manager: sonata.admin.manager.project, group: Admins, label: Admin Users}
    arguments: [null, %fos_user.model.user.class%, ProjectUserBundle:CRUD]
    calls:
      - [setTranslationDomain, [ProjectUserBundle]]

Entonces, tengo dos pestañas en el panel de administración, pero tiene una URL y funciona solo con una clase de administrador.

¿Alguna idea?

preguntado el 12 de junio de 12 a las 13:06

3 Respuestas

establezca dos parámetros baseRoutePattern y baseRouteName en su clase de administrador

Respondido el 12 de junio de 12 a las 14:06

Si te ayudó a solucionar tu problema, marca la respuesta como correcta. - El hipopótamo

Hice algo similar a esto y usé Doctrine Single Table Inheritance ( http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#single-table-inheritance ) en mi clase de usuario base para crear entidades separadas de administrador y usuario web.

Entonces es realmente sencillo usar Sonata Admin según los ejemplos sin necesidad de ajustes para administrar los dos conjuntos en diferentes listas.

Respondido el 15 de junio de 12 a las 13:06

Por ejemplo, primera clase de administración:

<?php
namespace App\PreorderBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;

class UserAdmin extends Admin
{
    protected $baseRouteName = 'preorder_user';
    protected $baseRoutePattern = 'preorder_user';
    protected function configureFormFields(FormMapper $formMapper)

Segunda clase de administrador:

namespace App\SecurityBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;

class UserAdmin extends Admin
{
    protected $baseRoutePattern = 'user';
    protected $baseRouteName = 'user';


    protected function configureFormFields(FormMapper $formMapper)

contestado el 11 de mayo de 17 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.