Bonjour, merci à tous pour vos réponses, c'est sympa de vous intéresser à mon problème
alors, comme le dit hbenyoussef : je cherche à rediriger vers la page d'accueil après une inscription et non pas après un login. Donc c'est pas au niveau du firewall qu'il faut le faire.
Par contre, mon problème a légèrement changé, j'ai réussi à régler ce premier problème mais un autre est survenu <u></u>:
Pour être précis voici ce que j'essaie de faire :
j'essaie de personnaliser ma page d'inscription pour avoir ma propre page et non la page /register de symfony.
ça marche nickel quand je fais dans ma vue twig :
{{ render(controller("FOSUserBundle:Registration:register")) }}
La méthode registerAction étant la suivante prédéfinie dans le RegistrationController du FOSUserBundle :
public function registerAction(Request $request)
{
/** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */
$formFactory = $this->container->get('fos_user.registration.form.factory');
/** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
$userManager = $this->container->get('fos_user.user_manager');
/** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
$dispatcher = $this->container->get('event_dispatcher');
$user = $userManager->createUser();
$user->setEnabled(true);
$event = new GetResponseUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
$form = $formFactory->createForm();
$form->setData($user);
if ('POST' === $request->getMethod()) {
$form->bind($request);
if ($form->isValid()) {
$event = new FormEvent($form, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
$userManager->updateUser($user);
if (null === $response = $event->getResponse()) {
$url = $this->container->get('router')->generate('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
return $response;
}
}
return $this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html.'.$this->getEngine(), array(
'form' => $form->createView(),
));
}
Et la vue twig correspondante est la suivante :
{% trans_default_domain 'FOSUserBundle' %}
<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">
{{ form_widget(form) }}
<div>
<input type="submit" value="{{ 'registration.submit'|trans }}" />
</div>
</form>
Le problème c'est que quand il y a une erreur de formulaire, j'arrive dans la page "/register" de symfony et ça, je veux pas.
Ce que je veux lorsqu'il y a une erreur dans l'inscription c'est revenir sur la même page que j'ai redéfini pour mon formulaire <u>MAIS</u> pouvoir afficher les messages d'erreur.
Pour le moment j'ai ajouté ceci à ma méthode RegisterAction (que j'ai surchargée dans mon UserBundle et non laissée dans le FosUserBundle bien sur !) :
if ('POST' === $request->getMethod()) {
$form->bind($request);
if ($form->isValid()) {
$event = new FormEvent($form, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
$userManager->updateUser($user);
if (null === $response = $event->getResponse()) {
$url = $this->container->get('router')->generate('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
return $response;
}
else
{
$referer=$request->headers->get('referer');
return new RedirectResponse($referer);
}
Je reviens bien vers la page sur laquelle était le formulaire, avec "$referer=$request->headers->get('referer')..."
La où ça coince avec cette méthode, c'est pour récupérer les erreurs du formulaire, et les réafficher sachant que je passe par :
{{ render(controller("FOSUserBundle:Registration:register")) }}