Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Easy Sonata Admin Laravel Package

caxy/easy-sonata-admin

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation

    composer require caxy/easy-sonata-admin
    

    Ensure it’s loaded before SonataAdminBundle in AppKernel.php.

  2. 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]
    
  3. 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.


Implementation Patterns

1. YAML-Driven Admin Generation

  • Pros: Avoids manual Admin class creation for simple CRUD.
  • Pattern: Define all UI logic in 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' }
    

2. Field Customization

  • Dynamic Field Types: Override Sonata’s default field types per property.
    edit:
        fields:
            - { property: description, type: 'ckeditor' }
            - { property: tags, type: 'sonata_type_model_list' }
    
  • Conditional Fields: Use type_options to add constraints (e.g., required: true).

3. Batch Actions & Filters

  • Bulk Operations: Define allowed batch actions (e.g., ['-delete', 'export']).
    batch_actions:
        - { name: 'export', label: 'Export to CSV' }
    
  • Filter Fields: Specify searchable fields in the list view.
    filter:
        fields: [name, category, createdAt]
    

4. Integration with Sonata Extensions

  • Custom Templates: Override Sonata’s templates by extending EasySonataAdminBundle templates (located in Resources/views).
  • Event Listeners: Use Sonata’s events (e.g., sonata.admin.event.configure) to extend behavior dynamically.

5. Reusable Configs

  • Shared Configs: Extend base configs for multiple entities.
    easy_sonata_admin:
        base_config:
            list:
                actions: [show, edit, delete]
        entities:
            AppBundle\Entity\BlogPost:
                extends: base_config
                edit:
                    fields: [title, content, published]
    

Gotchas and Tips

Pitfalls

  1. Bundle Loading Order

    • Error: ClassNotFoundException if EasySonataAdminBundle is loaded after SonataAdminBundle.
    • Fix: Ensure EasySonataAdminBundle is registered first in AppKernel.
  2. Cache Dependencies

    • Issue: Changes to config.yml may not reflect until cache is cleared.
    • Fix: Run php bin/console cache:clear after config updates.
  3. Field Type Mismatches

    • Error: Invalid type in type_options (e.g., type: 'nonexistent').
    • Fix: Use valid Sonata field types (e.g., text, date, sonata_type_model).
  4. Missing Entity Mapping

    • Error: No such entity if the class path is incorrect.
    • Fix: Verify the FQCN (e.g., AppBundle\Entity\User).
  5. Deprecated Features

    • Warning: Package last updated in 2016—some SonataAdminBundle features may not work.
    • Workaround: Manually extend Admin classes for advanced use cases.

Debugging Tips

  • Enable Sonata Debug Toolbar: Add to config.yml:
    sonata_admin:
        templates:
            layout: 'SonataAdminBundle::standard_layout.html.twig'
    
  • Check Generated Admin Classes: Dump the generated admin class path in sonata.admin config to inspect runtime behavior.

Extension Points

  1. Custom Admin Classes

    • Override generated admins by creating a service:
      services:
          app.admin.post:
              class: AppBundle\Admin\PostAdmin
              tags:
                  - { name: sonata.admin, manager_type: orm, group: 'Content', label: 'Post' }
      
    • Disable auto-generation for the entity in easy_sonata_admin.
  2. Dynamic Configs

    • Use sonata.admin.event.configure to modify configs at runtime:
      $event->getAdmin()->getConfigurationPool()->addConfiguration(...);
      
  3. Template Overrides

    • Copy EasySonataAdminBundle::admin_list.html.twig to templates/SonataAdmin/EasySonataAdmin/admin_list.html.twig for customizations.

Performance Notes

  • Avoid Over-Configuration: Complex YAML configs can slow down admin generation.
  • Use Base Configs: Reduce duplication with shared configs (as shown above).
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
comsave/common
alecsammon/php-raml-parser
chrome-php/wrench
lendable/composer-license-checker
typhoon/reflection
mesilov/moneyphp-percentage
mike42/gfx-php
bookdown/themes
aura/view
aura/html
aura/cli
povils/phpmnd
nayjest/manipulator
omnipay/tests
psr-mock/http-message-implementation
psr-mock/http-factory-implementation
psr-mock/http-client-implementation
voku/email-check
voku/urlify
rtheunissen/guzzle-log-middleware