2012-06-12 4 views
1

Как создать два разных списка для одной модели? В моем случае у меня есть одна модель User. И для этой модели в моей приборной панели у меня должно быть два списка: «Члены и админы». Я создаю для участников:Различные списки для одной модели в комплекте сонаты admin

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, и работать только с одним классом администратора.

Любые идеи?

ответ

3

установить два параметра baseRoutePattern и baseRouteName в админ классе

+0

ТНХ, это поможет! –

+0

Если вам помогли устранить проблему, которая помечает ответ как правильный. – TheHippo

1

я сделал подобную вещь для этого и используется Doctrine Single Table Inheritance (http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#single-table-inheritance) на мой базовый класс пользователя, чтобы создать отдельные администратора и WebUser объектов.

Тогда действительно просто использовать Sonata Admin в соответствии с примерами без каких-либо настроек, необходимых для управления двумя наборами в разных списках.

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)