使用FOSUserBundle扩展Symfony2中的UserManager [英] Extends UserManager in Symfony2 with FOSUserBundle

查看:59
本文介绍了使用FOSUserBundle扩展Symfony2中的UserManager的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图根据链接

我的服务被正确检测到,但是我无法解决:

My service is correctly detected but i have an error i can't resolved :

ErrorException: Catchable Fatal Error: Argument 1 passed to FOS\UserBundle\Entity\UserManager::__construct() must be an instance of Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface, none given, called in 

MyUserManager:

MyUserManager :

namespace ChoupsCommerce\UserBundle\Model;

use FOS\UserBundle\Entity\UserManager;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;

class MyUserManager extends UserManager
{
    public function loadUserByUsername($username)
    {
        $user = $this->findUserByUsernameOrEmail($username);

        if (!$user) {
            throw new UsernameNotFoundException(sprintf('No user with name "%s" was found.', $username));
        }

        return $user;
    }
}

推荐答案

我遇到了同样的问题,这是我的解决方案(基本上是前两个答案的组合):

I had the same problem, here is my solution (basically a combination of the first two answers):

在config.yml中设置服务,请不要忘记参数

Set up service in config.yml, don't forget the arguments

services:
    custom_user_manager:
        class: Acme\UserBundle\Model\CustomUserManager
        arguments: [@security.encoder_factory, @fos_user.util.username_canonicalizer, @fos_user.util.email_canonicalizer, @fos_user.entity_manager, Acme\UserBundle\Entity\User]

然后将服务连接到FOS user_manager(同样在config.yml中):

Then connect service to FOS user_manager (also in config.yml):

fos_user:
    service:
        user_manager: custom_user_manager

在CustomUserManager中,请像gilden所说的那样调用构造方法:

In the CustomUserManager recall the construct-method, like gilden said:

class CustomUserManager extends UserManager{

    public function __construct(EncoderFactoryInterface $encoderFactory, CanonicalizerInterface $usernameCanonicalizer, CanonicalizerInterface $emailCanonicalizer, ObjectManager $om, $class)
    {
        parent::__construct($encoderFactory, $usernameCanonicalizer, $emailCanonicalizer, $om, $class);
    }

}

这篇关于使用FOSUserBundle扩展Symfony2中的UserManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆