SonataAdminBundle - The missing Symfony2 Admin Generator
, (*1)
The online documentation of the bundle is in http://sonata-project.org/bundles/admin, (*2)
The demo website can be found in http://demo.sonata-project.org/admin/dashboard (admin as user and password), (*3)
For contribution to the documentation you can find it on Resources/doc., (*4)
Warning: documentation files are not rendering correctly in Github (reStructuredText format)
and some content might be broken or hidden, make sure to read raw files., (*5)
Warning: The bundle has been split into 4 bundles :, (*6)
Google Groups: For questions and proposals you can post on this google groups, (*7)
Quick example
Defining an Admin
class is pretty easy: simply define configure[Show|Form|List|Datagrid]Fields
methods, (*8)
``` php
<?php
namespace Sonata\NewsBundle\Admin;, (*9)
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Show\ShowMapper;, (*10)
class PostAdmin extends Admin
{
public function configureShowFields(ShowMapper $showMapper)
{
$showMapper
->add('author')
->add('enabled')
->add('title')
->add('abstract')
->add('content')
->add('tags')
;
}, (*11)
public function configureFormFields(FormMapper $formMapper)
{
$formMapper
->with('General')
->add('enabled', null, array('required' => false))
->add('author', 'sonata_type_model', array(), array('edit' => 'list'))
->add('title')
->add('abstract')
->add('content')
->end()
->with('Tags')
->add('tags', 'sonata_type_model', array('expanded' => true))
->end()
->with('Options', array('collapsed' => true))
->add('commentsCloseAt')
->add('commentsEnabled', null, array('required' => false))
->end()
;
}
public function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('title')
->add('author')
->add('enabled')
->add('tags')
->add('commentsEnabled')
;
}
public function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('title')
->add('enabled')
->add('tags', null, array('filter_field_options' => array('expanded' => true, 'multiple' => true)))
;
}
}
```
Screenshots : http://www.dropbox.com/gallery/581816/2/BaseApplicationBundle/preview?h=59b2e8, (*12)
Of course, power users will be happy as an Admin
class is very flexible as all dependencies are
injected by the DIC (dependency injection container)., (*13)
Features
-
Dashboard, (*14)
-
List, (*15)
- Automatic sort
- Link to associated admin (Post => User)
- Custom templates
- Row Action : edit, view, ...
- Batch Action
- Clever row visualisation : boolean values are represented with 'check picture'
- Filter
- Pagination
-
Edit/Create, (*16)
- Inline edition
- Association management (create related model with + icon)
- Group fields
- Sortable option
- Modal window to select model (when the list can be important)
- Dynamic form on [one|many]-to-many association (add new element)
-
Templating, (*17)
- base templates (field, list, filter) can be overwritten
- layout templates can be defined into the Service Container
-
Others, (*18)
- Nested Admin, ie /news/post/5/comment/list : filter and create comments only for the post with id=5
- Contextual Breadcrumb
- persistent parameters across an Admin
- side menu option
- Translated into 17 languages : CA, DE, EN, ES, FR, HR, IT, JA, LB, NL, PL, PT_BR, PT_PT, RU, SK, SL and UK.
- Built to be extended
- Explain command line utility
Usage examples
TODO
- create the ODM version
- save filter criteria
- export list