forked from KnpLabs/KnpUserBundle
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Open
Description
Hello,
I tried to override the registration controller for adding some custom fields, like register date.
But I have some problems:
"Cannot autowire service "fos_user.registration.form.factory": argument "$name" of method "FOS\UserBundle\Form\Factory\FormFactory::__construct()" has no type-hint, you should configure its value explicitly."
app/config/services.yaml:
fos_user.registration.form.factory:
class: FOS\UserBundle\Form\Factory\FormFactory
app/config/routes.yaml:
fos_user.registration:
path: /register
defaults:
_controller: App\Controller\RegistrationController::registerAction
app/Controller/RegistrationController:
<?php
namespace App\Controller;
use FOS\UserBundle\Controller\RegistrationController as FOSController;
use FOS\UserBundle\Event\FilterUserResponseEvent;
use FOS\UserBundle\Event\FormEvent;
use FOS\UserBundle\Event\GetResponseUserEvent;
use FOS\UserBundle\Form\Factory\FactoryInterface;
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Model\UserInterface;
use FOS\UserBundle\Model\UserManagerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class RegistrationController extends FOSController
{
public function __construct()
{
}
public function registerAction(Request $request)
{
$eventDispatcher = $this->get('event_dispatcher');
$formFactory = $this->get('fos_user.registration.form.factory');
$userManager = $this->get('fos_user.user_manager');
$user = $userManager->createUser();
$user->setEnabled(true);
$event = new GetResponseUserEvent($user, $request);
$eventDispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
$form = $formFactory->createForm();
$form->setData($user);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$event = new FormEvent($form, $request);
$eventDispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
$register_date = date_create(date('Y-m-d H:i:s'));
$user_id = "000000000000001";
$roles = ["ROLE_USER"];
$user->setDateRegister($register_date);
$user->setUserId($user_id);
$user->setRoles($roles);
$userManager->updateUser($user);
if (null === $response = $event->getResponse()) {
$url = $this->generateUrl('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}
$eventDispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
return $response;
}
$event = new FormEvent($form, $request);
$this->$eventDispatcher->dispatch(FOSUserEvents::REGISTRATION_FAILURE, $event);
if (null !== $response = $event->getResponse()) {
return $response;
}
}
return $this->render('@FOSUser/Registration/register.html.twig', array(
'form' => $form->createView(),
));
}
}
Thank you in advance :)
Metadata
Metadata
Assignees
Labels
No labels