我们为我们的用户使用 Symfony2 框架和 FOSUserBundle。所以我们有我们自己的 UserBundle,它继承自 FOSUserBundle。问题是:当我们使用错误的密码发送用于编辑用户的表单时,由于表单不正确,显示在标题中的 app.user.username 在不应该更改时发生了变化。然后当我们重新加载页面时, app.user.username 具有正常的用户名(因为它在数据库中没有改变)。问题是,为什么 app.user.username 会临时更改我们刚刚使用错误密码发送的表单(编辑用户)的值?
我们使用 FOSUser 的正常路由:
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /resetting
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /profile
Run Code Online (Sandbox Code Playgroud)
FOSUser 的默认控制器:
public function editAction(Request $request)
{
$user = $this->getUser();
if (!is_object($user) || !$user instanceof UserInterface) {
throw new AccessDeniedException('This user does not have access to this section.');
}
/** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
$dispatcher = $this->get('event_dispatcher');
$event = new GetResponseUserEvent($user, $request); …Run Code Online (Sandbox Code Playgroud)