Symfony 2 中的 FOSUserBundle - 在尝试查找现有用户时返回 NULL.根据文档,


FOSUserBundle in Symfony 2 - Returns NULL when trying to find existing user

FOSUserBundle无法检索它一秒钟前创建的现有用户并返回NULL。

配置.yml for fos_user:

fos_user:
db_driver: mongodb
firewall_name: main
user_class: SignalsPlatform'SpotApiBundle'Document'User
use_listener: false

用户模型(默认):

<?php namespace SignalsPlatform'SpotApiBundle'Document;
use FOS'UserBundle'Model'User as BaseUser;
use Doctrine'ODM'MongoDB'Mapping'Annotations as MongoDB;
/**
 * @MongoDB'Document(
 *  db="signals",
 *  collection="User"
 * )
 */
class User extends BaseUser {
    /**
    * @MongoDB'Id(strategy="auto")
    */
    protected $id;
}

寄存器控制器:

 /**
 * @Route("/user/create", name="user_create")
 * @param Request $request
 * @return Response
 */
public function createAction(Request $request)
{
    /** @var 'FOS'UserBundle'Doctrine'UserManager $userManager */
    $userManager = $this->container->get('fos_user.user_manager');
    $foundUser = $userManager->findUserByEmail($request->request->getAlpha('email'));
    var_dump($foundUser); // returns NULL

MongoDB查找结果:

> use signals
switched to db signals

.db。User.find({email:'picuvypoxe@gmail.com'})

{ "_id" : ObjectId("54b3aba3d700e9ab198b4568"), "usernameCanonical" : "lojixyc", "email" : "picuvypoxe@gmail.com", "emailCanonical" : "picuvypoxe@gmail.com", "enabled" : true, "salt" : "l4vsg8j59u884w8w0okwo0o4ogscssw", "password" : BinData(5,"UGEkJHcwcmQh"), "locked" : false, "expired" : false, "roles" : [ ], "credentialsExpired" : false, "firstName" : "Alexis", "lastName" : "Lancaster", "country" : "IL", "phone" : "(+972) 695898", "birthDate" : "8-8-1930", "userName" : "lojixyc", "currency" : "USD", "createdAt" : ISODate("2015-01-12T11:10:27Z") }

如果缺少任何信息 - 请告诉我。此默认代码段假定查找用户。

似乎

$request->request->getAlpha('email')

正在剥离电子邮件特殊字符,替换为

$request->请求->get("电子邮件")

修复了此问题。