首页 > 解决方案 > 如何在存储库中使用 UserPasswordEncoderInterface 对密码进行编码?

问题描述

在我的存储库中,我想做类似的事情:

public function generatePassword(Users $user, UserPasswordEncoderInterface $passwordEncoder)
{
    return $passwordEncoder->encodePassword($user,$user->getPlainPassword());
}

但是控制器内部的函数需要第二个参数。有没有办法自动加载 UserPasswordEncoderInterface 或初始化它?

标签: symfony4php-7.1

解决方案


您可以通过使用构造函数注入来做到这一点。

您应该将UserPasswordEncoderInterface您的存储库类加载并全局保存(在您的类中)。然后您可以使用它而无需在函数参数中声明它。

像这样的东西:

class Repository
{
    private $passwordEncoder;

    public function __construct(UserPasswordEncoderInterface $passwordEncoder)
    {
        $this->passwordEncoder = $passwordEncoder;
    }

    public function generatePassword(Users $user)
    {
        return $this->passwordEncoder->encodePassword($user,$user->getPlainPassword());
    }
}

还要输入提示您的服务。


推荐阅读