artgris/easy-admin-commands-bundle
Install the package:
composer require artgris/easy-admin-commands-bundle
Enable the bundle in config/bundles.php:
return [
// ...
Artgris\EasyAdminCommandsBundle\ArtgrisEasyAdminCommandsBundle::class => ['all' => true],
];
Configure the bundle in config/packages/artgris_easy_admin_commands.yaml:
artgris_easy_admin_commands:
dir: '%kernel.project_dir%/config/packages/easy_admin/entities/'
namespaces:
- 'App\Entity'
Generate the first config:
php bin/console artgris:easyadmin:export
This creates a config/packages/easy_admin/entities/ directory and generates YAML files for all entities in the specified namespaces.
Import the generated configs in config/packages/easy_admin.yaml:
imports:
- { resource: easy_admin/entities/ }
After creating a new entity (e.g., App\Entity\Product), run:
php bin/console artgris:easyadmin:export App\Entity\Product
This generates a dedicated YAML config for Product in config/packages/easy_admin/entities/product.yaml, ready for EasyAdminBundle to use.
Add a new entity:
App\Entity\BlogPost).php bin/console artgris:easyadmin:export App\Entity\BlogPost to auto-generate the EasyAdmin config.Bulk configuration:
included/excluded lists in artgris_easy_admin_commands.yaml to control which entities are processed:
artgris_easy_admin_commands:
entities:
included:
- 'App\Entity\Product'
- 'App\Entity\BlogPost'
excluded:
- 'App\Entity\User'
php bin/console artgris:easyadmin:export
Field-specific customization:
regex:
regex:
^image_: image
^price_: money
types:
text:
type_options:
attr: { class: 'tinymce' }
date:
type_options:
attr: { class: 'flatpickr', format: 'd/m/Y' }
List and form layout:
list:
position:
- title
- { property: 'createdAt', label: 'Published On' }
excluded:
- slug
form:
position:
- title
- content
- { property: 'publishedAt', type: date }
Integration with EasyAdminBundle:
easy_admin.yaml imports the generated configs:
imports:
- { resource: easy_admin/entities/ }
easy_admin.yaml for global overrides:
easy_admin:
design:
menu:
- { label: 'Products', entity: 'App\Entity\Product', icon: 'tag' }
Namespace Mismatches:
namespaces in artgris_easy_admin_commands.yaml match your entity locations.App\Entity will miss all entities in that namespace.Overwriting Configs:
php bin/console artgris:easyadmin:export without arguments regenerates all configs, overwriting manual edits.php bin/console artgris:easyadmin:export App\Entity\SpecificEntity to target a single entity.Type Conflicts:
regex patterns may override default type mappings unintentionally.EasyAdminBundle Version:
composer.json:
"require": {
"easycorp/easyadmin-bundle": "~2.0"
}
Circular Imports:
easy_admin.yaml imports a non-existent file (e.g., due to a typo in dir), Symfony throws a FileNotFoundException.dir path exists and is writable.Dry Run:
easy_admin/entities/ directory manually.Command Arguments:
--help to see all options:
php bin/console artgris:easyadmin:export --help
php bin/console artgris:easyadmin:export App\Entity\Product --force
Logging:
APP_DEBUG=1) to see detailed output during config generation.Validation:
php bin/console debug:container --parameters | grep app.path
(Ensure paths like %app.path.product_images% are defined in parameters.yaml.)Custom Field Types:
artgris_easy_admin_commands.yaml:
types:
json:
type: json
type_options:
attr: { class: 'json-editor' }
Post-Generation Hooks:
kernel.terminate event to process generated configs programmatically:
// src/EventListener/PostEasyAdminGenerateListener.php
namespace App\EventListener;
use Symfony\Component\HttpKernel\Event\TerminateEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class PostEasyAdminGenerateListener
{
public function onTerminate(TerminateEvent $event)
{
if ($event->isMainRequest()) {
$generatedConfigs = $this->findGeneratedConfigs();
// Custom logic (e.g., add translations, modify fields)
}
}
}
Register the listener in services.yaml:
services:
App\EventListener\PostEasyAdminGenerateListener:
tags:
- { name: kernel.event_listener, event: kernel.terminate }
Dynamic Configs:
ParameterBag to generate configs dynamically based on environment variables:
# artgris_easy_admin_commands.yaml
types:
image:
base_path: '%env(APP_MEDIA_PATH)%'
Testing:
ArtgrisEasyAdminCommandsBundle configuration:
$container->get('artgris_easy_admin_commands.config')->setDir(sys_get_temp_dir() . '/easy_admin_test');
How can I help you explore Laravel packages today?