索纳塔管理包中一个模型的不同列表


Different lists for one model in sonata admin bundle

如何为一个模型创建两个不同的列表?就我而言,我有一个模型用户。对于仪表板中的此模型,我必须有两个列表:成员和管理员。我为会员创建:

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]]

对于管理员:

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]]

因此,我在管理面板中有两个选项卡,但它有一个 url,并且仅适用于一个 Admin 类。

有什么想法吗?

在管理员类中设置两个参数baseRoutePattern和baseRouteName

我做了类似的事情,并在我的基本用户类上使用原则单表继承(http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#single-table-inheritance)来创建单独的管理员和WebUser实体。

然后,按照示例使用Sonata Admin非常简单,无需进行任何调整即可管理不同列表中的两个集合。

例如First Admin Class:

<?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)

第二类管理员:

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)