Я новичок в Symfony2, я пытаюсь переопределить контроллер, используя услугу внутриДоступа к переопределению FOS пользователь Bundle контроллера
Это контроллер
class RegistrationController extends BaseController
{
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);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, new UserEvent($user, $request));
$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('easy_app_user_profile');
$response = new RedirectResponse($url);
}
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
//create UserInfo
$doctrine = $this->container->get('doctrine');
$userInfo = new UserInformation();
$userInfo->setUser($user);
//save the userInfo
$em = $doctrine->getManager();
$em->persist($userInfo);
$em->flush();
//add user first login
$loginManager = $this->get('user_login_manager');
$loginManager->saveUser($request, $user);
return $response;
}
}
return $this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html.'.$this->getEngine(), array(
'form' => $form->createView(),
));
}
}
регистра в конце Я использую
$loginManager = $this->get('user_login_manager');
$loginManager->saveUser($request, $user);
Но я не могу использовать get, потому что это не расширение контроллера. Так что я не знаю, как получить доступ к моей службе в этом контроллере
Благодаря
Спасибо за ваш ответ. Это работает. Я добавляю событие события: «security.interactive_login», но это работает только при входе в систему, а не в регистре, поэтому я добавляю это. Если у вас есть решение, дайте мне знать :) – Ajouve
В новых версиях FOSUserBundle представила собственные события, на которых вы можете слушать. см. ссылку в моем отредактированном ответе –
Спасибо, я нахожу это, я работаю над – Ajouve