Installation Clone the repository and install dependencies:
composer create-project edge5/app-backend-bundle my-project
cd my-project
composer install
Database Configuration
Update .env with your database credentials and run migrations:
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
First Use Case: User Management
/register)./admin) to manage entities (e.g., users, roles).src/Admin/—customize CRUD interfaces for entities.src/User/.src/Translation/.Customize Entity CRUD:
Override default templates in templates/admin/ or extend controllers in src/Admin/Controller/.
Example: Add a custom field to the User admin:
// src/Admin/UserAdmin.php
public function configureFields(string $pageName): iterable
{
return [
'id',
'email',
'username',
'customField' => 'text', // New field
];
}
Workflows:
generate:crud command to scaffold new entities:
php bin/console generate:crud
Custom User Provider:
Extend UserManager in src/User/UserManager.php to add logic (e.g., auto-activation):
public function createUser(array $userData)
{
$user = parent::createUser($userData);
$user->setEnabled(true); // Auto-enable
return $user;
}
Role Hierarchy:
Define roles in config/packages/security.yaml:
role_hierarchy:
ROLE_ADMIN: [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]
Entity Translation:
Use Gedmo\Translatable for multi-language support. Example:
// src/Entity/Product.php
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @Gedmo\TranslationEntity(class="App\Entity\ProductTranslation")
*/
private $translations;
Workflow:
gedmo/doctrine-extensions.gedmo/translatable to your entity.TranslatableListener in config/packages/doctrine.yaml.| Task | Command/Code Snippet |
|---|---|
Generate CRUD for Post |
php bin/console make:crud Post |
| Add translation field | php bin/console doctrine:mapping:import |
| Customize login form | Extend FOSUserBundle:Security:login template |
AdminGenerator Caching: Clear cache after modifying admin templates:
php bin/console cache:clear
FOSUserBundle Conflicts:
User entity extends FOS\UserBundle\Model\User (not AbstractUser).loadUserByUsername() if using custom email/username logic.Translation Quirks:
php bin/console doctrine:schema:update --force after adding Translatable fields.translatable:dump to export translations:
php bin/console gedmo:translatable:dump
AdminGenerator Issues:
Check var/log/dev.log for AdminGeneratorBundle errors.
Enable debug toolbar (APP_DEBUG=true in .env).
FOSUserBundle: Dump user data in a controller to verify:
$user = $this->getUser();
dump($user->getRoles());
Custom Admin Actions:
Add buttons to AdminGenerator via configureActions():
public function configureActions(): iterable
{
return [
'export' => [
'type' => 'text',
'label' => 'Export',
'icon' => 'fa-download',
],
];
}
Event Listeners:
Subscribe to fos_user_registered or admin_generator.pre_generate:
// src/EventListener/CustomListener.php
public function onUserRegistered(UserEvent $event)
{
$user = $event->getUser();
$user->addRole('ROLE_USER');
}
Register in services.yaml:
services:
App\EventListener\CustomListener:
tags:
- { name: 'kernel.event_listener', event: 'fos_user.registered', method: 'onUserRegistered' }
Bulk Operations:
Use AdminGenerator’s batch_actions to enable bulk delete/update:
# config/packages/admin_generator.yaml
batch_actions:
delete: true
enable: true
Performance: For large datasets, paginate AdminGenerator lists:
public function configureDatagridFilters(string $pageName): iterable
{
return [
'paginator' => ['page' => 1, 'limit' => 50],
];
}
How can I help you explore Laravel packages today?