1

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

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,并且只能与一个管理类一起使用。

有任何想法吗?

4

3 回答 3

3

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

于 2012-06-12T13:57:01.670 回答
1

我做了类似的事情并使用了 Doctrine Single Table Inheritance ( http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#single-table-继承) 在我的基本用户类上创建单独的 Admin 和 WebUser 实体。

然后,根据示例使用 Sonata Admin 非常简单,无需进行任何调整来管理不同列表中的两组。

于 2012-06-15T12:40:20.887 回答
0

例如第一个管理员类:

<?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)
于 2017-05-11T14:46:09.260 回答