Reputation: 43
How can I create two different lists for one model? In my case I have one model User. And for this model in my dashboard I must have two lists: Members and Admins. I create for members:
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]]
and for admins:
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]]
So, I have two tabs in admin panel, but it has one url, and work only with one Admin class.
Any ideas?
Upvotes: 1
Views: 1626
Reputation: 1
For Example 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)
Second Admin Class:
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)
Upvotes: 0
Reputation: 2400
I did a similar thing to this and used Doctrine Single Table Inheritance ( http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#single-table-inheritance ) on my base user class to create separate Admin and WebUser entities.
Then it's really straight forward to just use Sonata Admin as per the examples without any tweaks required to manage the two sets in different lists.
Upvotes: 1
Reputation: 46
set two parameters baseRoutePattern and baseRouteName in your admin class
Upvotes: 3