- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想覆盖 FOS\UserBundle\Controller\RegistrationController 以添加一些功能(管理我在注册表中添加的字段等)。
我不知道为什么,在覆盖它之后,symphony 忽略了我的 Controller 。这不是第一次了,我也试过重写别人...一直没找到解决办法...
<?php
namespace FP\UserBundle\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use FOS\UserBundle\Controller\RegistrationController as BaseController;
class RegistrationController extends BaseController
{
public function registerAction()
{
$response = parent::registerAction();
echo "FPUserBundle";
// do custom stuff
return $response;
}
}
.
<?php
namespace FP\UserBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class FPUserBundle extends Bundle
{
public function getParent()
{
return 'FOSUserBundle';
}
}
.
<?php
/*
* This file is part of the FOSUserBundle package.
*
* (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace FOS\UserBundle\Controller;
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\FormEvent;
use FOS\UserBundle\Event\GetResponseUserEvent;
use FOS\UserBundle\Event\FilterUserResponseEvent;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use FOS\UserBundle\Model\UserInterface;
/**
* Controller managing the registration
*
* @author Thibault Duplessis <thibault.duplessis@gmail.com>
* @author Christophe Coevoet <stof@notk.org>
*/
class RegistrationController extends Controller
{
public function registerAction(Request $request)
{
echo "FOSUserBundle";
/** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */
$formFactory = $this->get('fos_user.registration.form.factory');
/** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
$userManager = $this->get('fos_user.user_manager');
/** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
$dispatcher = $this->get('event_dispatcher');
$user = $userManager->createUser();
$user->setEnabled(true);//active l'user
$event = new GetResponseUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
$form = $formFactory->createForm();
$form->setData($user);
$form->handleRequest($request);
if ($form->isValid()) {
$event = new FormEvent($form, $request);
//--- ajout des données pour les champs ajoutés ---
$user->setDateInscrip(new \DateTime());
$user->setRoles(array('ROLE_USER'));
//--------- Fin de l'ajout ---------
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
$userManager->updateUser($user);
if (null === $response = $event->getResponse()) {
$url = $this->generateUrl('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
return $response;
}
return $this->render('FOSUserBundle:Registration:register.html.twig', array(
'form' => $form->createView(),
));
}
/**
* Tell the user to check his email provider
*/
public function checkEmailAction()
{
$email = $this->get('session')->get('fos_user_send_confirmation_email/email');
$this->get('session')->remove('fos_user_send_confirmation_email/email');
$user = $this->get('fos_user.user_manager')->findUserByEmail($email);
if (null === $user) {
throw new NotFoundHttpException(sprintf('The user with email "%s" does not exist', $email));
}
return $this->render('FOSUserBundle:Registration:checkEmail.html.twig', array(
'user' => $user,
));
}
/**
* Receive the confirmation token from user email provider, login the user
*/
public function confirmAction(Request $request, $token)
{
/** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserByConfirmationToken($token);
if (null === $user) {
throw new NotFoundHttpException(sprintf('The user with confirmation token "%s" does not exist', $token));
}
/** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
$dispatcher = $this->get('event_dispatcher');
$user->setConfirmationToken(null);
$user->setEnabled(true);
$event = new GetResponseUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_CONFIRM, $event);
$userManager->updateUser($user);
if (null === $response = $event->getResponse()) {
$url = $this->generateUrl('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_CONFIRMED, new FilterUserResponseEvent($user, $request, $response));
return $response;
}
/**
* Tell the user his account is now confirmed
*/
public function confirmedAction()
{
$user = $this->getUser();
if (!is_object($user) || !$user instanceof UserInterface) {
throw new AccessDeniedException('This user does not have access to this section.');
}
return $this->redirect($this->generateUrl('fp_user_inscrip', array('user' => $user)));
/*
return $this->render('FPPlatformBundle:Index:index.html.twig', array(
'user' => $user,
));*/
}
}
尽管有这些代码,当我运行检查时,“FPUserBundle”没有显示,而“FOSUserBundle”显示良好......
最佳答案
检查您是否已将新的 Bundle 添加到 app/AppKernel.php::registerBundles 函数中。
关于php - 覆盖 FOSUserBUndle Controller Symfony 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32036330/
刚开始用fosuserbundle,今天激活确认注册链接。 效果很好,但是如果用户再次单击电子邮件中的确认链接,则会收到该错误: 具有确认 token “3hiqollkisg0s4ck4w8g0gw
我正在关注这个:https://symfony.com/doc/current/bundles/FOSUserBundle/overriding_templates.html 我在 vendor/fr
这是我的 original question 的后续问题我试图在身份验证期间重新散列用户密码以从旧数据库迁移。 在那里实现有用的答案之后。我现在遇到了另一个问题,我没有收到任何错误(使用以下代码)但是
我在 Windows 上使用 symfony,我尝试按照 official documentation 中的描述配置 FOSUserBundle。 当我运行 php app/console doctr
我正在尝试为我的电子邮件定义自己的模板,该模板在用户请求密码时发送,但是在添加HTML部分时不起作用。 这是模板: {% trans_default_domain 'FOSUserBundle' %}
我已经搜索了两个小时,无法在FOSUserBundle中找到有关如何实现“忘记密码”功能的任何信息。 这是 bundle 软件的一部分,还是我必须创建自己的东西。 最佳答案 实际上,您没有找到任何关于
我正在 Symfony2 Web 应用程序中添加新功能,经过几次开发后,编辑用户功能停止工作。 出于某种原因,错误显示在 edit user screen 中。 ,不在 show user 中. 错误
我想覆盖 FOSUserBundle 中的注册表单。 我已关注此页面:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/1.3.x/Reso
我正在使用带有 FOSUserBundle 的 Symfony 2.8.2。当我尝试注销时,出现以下错误: You must activate the logout in your security
因此,当我在生产环境中通过 fosUserBundle 表单注册时,它会向我的 gmail 发送一封电子邮件,但电子邮件中没有确认链接,只有这个 registration.email.message
我已经在 FOSUserBundle 中激活了电子邮件确认。它允许用户在之后通过邮件收到链接他们注册。 registration: confirmation: enabled:
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我正在构建一个应用程序,其中我有(至少)两种不同的用户类型,比如说买家和卖家。每个用户类型都应该有自己的逻辑(注册表格/流程、配置文件、权限等),但我想对每个用户使用 FOSUserBundle,以便
我正在使用 FOSUserBundle 和 Group 选项。 注册工作。组的创建也有效。 如果我创建 2 个组,admin 和 client 并手动添加 a:1:{i:0;s:10:"ROLE_AD
我有实体 用户 扩展 FOSUserBundle . class User extends BaseUser { ... protected $ref_id; /** * @
有人可以解释一下如何在 Controller 中手动创建一个“记住我” cookie吗? 我希望用户在按下“注册”后保持登录状态 按钮,而无需随后使用其凭据登录。 我试图手动创建一个cookie,但我
我目前正在尝试找出将原则持久角色实体实现为与 FOSUserBundle 兼容的 M2M 关系的最佳方法。以前我只使用带有默认实现的字符串,并使用教义数组映射来持久化它。 现在我需要将角色作为单独的实
我是 symfony 的新用户,我目前正在上一门类(class)(全日制),我的问题: # app/config/config.yml framework: translator:
我在Symfony应用程序中使用FOSUserBundle,这确实很棒。他们在单独的模板中具有登录和注册表单。我希望两者都在一个模板中彼此相邻显示。 因此,我创建了app/Resources/FOSU
我在覆盖实体时遇到问题。 我需要该字段 emailCanonical不是独一无二的。 这是我所做的: 在我的 UserBundle\Resources\config\doctrine\User.orm
我是一名优秀的程序员,十分优秀!