sonata管理包中的一个模型的不同列表

时间:2012-06-12 12:16:03

标签: php symfony symfony-sonata

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

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

因此,我在管理面板中有两个标签,但它有一个网址,只能使用一个Admin类。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

在管理类

中设置两个参数baseRoutePattern和baseRouteName

答案 1 :(得分:1)

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

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

答案 2 :(得分: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)