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("电子邮件")
修复了此问题。