如何为一个模型创建两个不同的列表?在我的情况下,我有一个模型用户。对于我的仪表板中的这个模型,我必须有两个列表:成员和管理员。我为成员创建:
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类。
有什么想法吗?
答案 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)