Installation
composer require caxy/easy-sonata-admin
Ensure it’s loaded before SonataAdminBundle in AppKernel.php.
Basic Configuration
Add a minimal easy_sonata_admin section to config.yml:
easy_sonata_admin:
entities:
AppBundle\Entity\YourEntity:
list:
fields: [id, field1, field2]
edit:
fields: [id, field1, field2]
First Use Case
Generate a CRUD admin for a simple entity (e.g., Post):
easy_sonata_admin:
entities:
AppBundle\Entity\Post:
list:
fields: [id, title, createdAt]
actions: [show, edit, delete]
edit:
fields: [title, content, published]
Clear cache (php bin/console cache:clear) and visit /admin.
Admin class creation for simple CRUD.config.yml (list, edit, filter, batch actions).
easy_sonata_admin:
entities:
AppBundle\Entity\Product:
list:
fields: [sku, name, price]
actions: [show, edit, delete]
sort: [name, sku]
edit:
fields:
- { property: name, type_options: { label: 'Product Name' } }
- { property: price, type: 'money' }
edit:
fields:
- { property: description, type: 'ckeditor' }
- { property: tags, type: 'sonata_type_model_list' }
type_options to add constraints (e.g., required: true).['-delete', 'export']).
batch_actions:
- { name: 'export', label: 'Export to CSV' }
filter:
fields: [name, category, createdAt]
EasySonataAdminBundle templates (located in Resources/views).sonata.admin.event.configure) to extend behavior dynamically.easy_sonata_admin:
base_config:
list:
actions: [show, edit, delete]
entities:
AppBundle\Entity\BlogPost:
extends: base_config
edit:
fields: [title, content, published]
Bundle Loading Order
ClassNotFoundException if EasySonataAdminBundle is loaded after SonataAdminBundle.EasySonataAdminBundle is registered first in AppKernel.Cache Dependencies
config.yml may not reflect until cache is cleared.php bin/console cache:clear after config updates.Field Type Mismatches
type in type_options (e.g., type: 'nonexistent').text, date, sonata_type_model).Missing Entity Mapping
No such entity if the class path is incorrect.AppBundle\Entity\User).Deprecated Features
Admin classes for advanced use cases.config.yml:
sonata_admin:
templates:
layout: 'SonataAdminBundle::standard_layout.html.twig'
sonata.admin config to inspect runtime behavior.Custom Admin Classes
services:
app.admin.post:
class: AppBundle\Admin\PostAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: 'Content', label: 'Post' }
easy_sonata_admin.Dynamic Configs
sonata.admin.event.configure to modify configs at runtime:
$event->getAdmin()->getConfigurationPool()->addConfiguration(...);
Template Overrides
EasySonataAdminBundle::admin_list.html.twig to templates/SonataAdmin/EasySonataAdmin/admin_list.html.twig for customizations.How can I help you explore Laravel packages today?