Installation:
composer require friendsofsymfony/user-bundle
Add to config/bundles.php:
return [
// ...
FriendsOfSymfony\UserBundle\FOSUserBundle::class => ['all' => true],
];
Database Configuration:
Ensure your User entity extends FOS\UserBundle\Model\User (or UserInterface).
Example:
use FOS\UserBundle\Model\User as BaseUser;
class User extends BaseUser
{
// Custom fields here
}
First Use Case:
Generate a CRUD controller for User:
php bin/console make:crud User
Enable registration routes in config/routes.yaml:
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
prefix: /auth
User Registration:
FOSUserBundle's registration form:
use FOS\UserBundle\Form\Type\RegistrationFormType;
$builder->add('customField', TextType::class);
templates/FOSUserBundle/registration/register.html.twig).Password Reset:
$dispatcher->dispatch(
FOSUserEvents::PASSWORD_RESET_INITIALIZE,
new GetResponseUserPasswordResetEvent($user, $request)
);
templates/FOSUserBundle/ResetPassword/email.txt.twig.Authentication Integration:
security.yaml to use fos_user.user_provider.username_email:
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
User entity and update RegistrationFormType:
$builder->add('phone', TextType::class);
FOSUserEvents::REGISTRATION_COMPLETED) in services.yaml:
services:
App\EventListener\UserListener:
tags:
- { name: kernel.event_listener, event: fos_user.registration.completed, method: onRegistrationComplete }
Route Conflicts:
Ensure fos_user routes don’t clash with existing routes (e.g., /register). Use prefix in routes.yaml.
Doctrine Migrations: After adding custom fields, run:
php bin/console doctrine:schema:update --force
Email Configuration:
Verify fos_user.mailer service is properly configured in config/packages/fos_user.yaml:
fos_user:
from_email:
address: "noreply@example.com"
sender_name: "App Name"
Event Debugging: Enable Symfony’s event dispatcher debug mode:
$dispatcher->addListener(FOSUserEvents::REGISTRATION_COMPLETED, function($event) {
dump($event->getUser());
});
Form Validation:
Use fos_user.registration.form.type to debug form errors:
$form = $this->createForm(FOSUserBundle::getRegistrationFormType(), $user);
Custom User Provider:
Extend FOS\UserBundle\Model\UserManager for custom logic:
class CustomUserManager extends UserManager
{
public function updateUser(UserInterface $user, array $data)
{
// Custom logic
parent::updateUser($user, $data);
}
}
Template Overrides:
Copy templates from vendor/friendsofsymfony/user-bundle/Resources/views to templates/FOSUserBundle/ to override defaults.
Security Integration:
Use fos_user.user_provider in security.yaml for custom authentication logic:
firewalls:
main:
form_login:
provider: fos_userbundle
How can I help you explore Laravel packages today?