symfony - 使用 FOSUserBundle 在 Symfony2 中扩展 UserManager

标签 symfony extends fosuserbundle

我尝试根据这个link扩展FOS的UserManager

我的服务被正确检测到,但我有一个无法解决的错误:

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 

我的用户管理器:
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;
    }
}

最佳答案

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

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

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 中):
fos_user:
    service:
        user_manager: custom_user_manager

在 CustomUserManager 中调用构造方法,就像 gilden 所说:
class CustomUserManager extends UserManager{

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

}

关于symfony - 使用 FOSUserBundle 在 Symfony2 中扩展 UserManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806379/

相关文章:

java - java中如何声明子类构造函数

java - super()的使用;在 java

fosuserbundle - knp 菜单包 symfony

symfony - Symfony2中如何获取文件的绝对路径?

php - Symfony2 - 从数据库中提取数据并以表格形式显示

typescript - 通过扩展和实现的组合理解 TS 的类型推断/缩小

php - FOS : Ungranted user is accessing to certain URL

model-view-controller - Symfony 2 : Dependency injection (DI) of Controllers

php - Symfony2 : The option "widget" does not exist

php - 为 findBy 学说存储库函数返回具有特定键的关联数组