显示用户实体 SonataAdminBundle

display User Entity SonataAdminBundle

我使用 symfony 2.8 和 sonataAdminBundle,在后台我喜欢看到两种类型的用户 "Client" 和 "Correspondant",这两个用户有相同的实体 "User" 和我通过字段 "type" 区分这两个用户,我已经创建了这样的 AdminClasse:

通讯管理员

 class CorrespondantAdmin extends AbstractAdmin
  {
      public function createQuery($context = 'list')
       {
          $query = parent::createQuery($context);
          $query->andWhere(
          $query->expr()->eq($query->getRootAliases()[0] . '.type', ':my_param')
     );
         $query->setParameter('my_param', 'correspondant');
       return $query;

      }

     protected function configureListFields(ListMapper $listMapper)

       {
           $listMapper

       ->addIdentifier('nom')
        ->add('prenom')
        ->add('email')
        ->add('civilite')
        ->add('dateInscrit')
        ->add('_action', 'actions', array(
            'actions' => array(
                'show' => array(),
                'edit' => array(),
            )
        ))

         ;

      }

ClientAdmin

 class ClientAdmin extends AbstractAdmin
  {
      public function createQuery($context = 'list')
       {
          $query = parent::createQuery($context);
          $query->andWhere(
          $query->expr()->eq($query->getRootAliases()[0] . '.type', ':my_param')
     );
         $query->setParameter('my_param', 'client');
       return $query;

      }

     protected function configureListFields(ListMapper $listMapper)

       {
           $listMapper

       ->addIdentifier('nom')
        ->add('prenom')
        ->add('email')
        ->add('civilite')
        ->add('dateInscrit')
        ->add('_action', 'actions', array(
            'actions' => array(
                'show' => array(),
                'edit' => array(),
            )
        ))

         ;

      }

Admin.yml

    app.admin.correspondant:
    class: Devagnos\AdminBundle\Admin\CorrespondantAdmin
    tags:
        - { name: sonata.admin, manager_type: orm, group: "Utilisateurs", label: "Mes Correspondants" }
    arguments:
        - ~
        - Devagnos\UserBundle\Entity\User
        - ~
    calls:
        - [ setTranslationDomain, [AdminBundle]]
    public: true

app.admin.client:
    class: Devagnos\AdminBundle\Admin\ClientAdmin
    tags:
        - { name: sonata.admin, manager_type: orm, group: "Utilisateurs", label: "Mes Clients" }
    arguments:
        - ~
        - Devagnos\UserBundle\Entity\User
        - ~
    calls:
        - [ setTranslationDomain, [AdminBundle]]
    public: true

我一直是最后一个服务声明的结果的问题(在这个问题上,结果总是 "Client" 和 "Correspondant""client"

有人可以帮助我吗?

你清除缓存了吗?您的 Admin.yml 格式是否正确?

编辑: 对于两个管理员 类,你可能有相同的路由。尝试为每个管理员定义自己的路线。之后清除缓存。

客户端管理员

class ClientAdmin extends AbstractAdmin
{
    const ROUTE = 'client-user';

    protected $baseRoutePattern = self::ROUTE;

    protected $baseRouteName = self::ROUTE;


    ...

通讯管理员

class CorrespondantAdmin extends AbstractAdmin
{
    const ROUTE = 'correspondant-user';

    protected $baseRoutePattern = self::ROUTE;

    protected $baseRouteName = self::ROUTE;


    ...