0

我正在尝试使用以下指南让自己的 UserBundle 在 sf 2.6.3 上工作:Symfony Book

我已将该示例代码粘贴到用户实体中的 setPassword 方法中(但不知道这是否意味着要使用它),将其更改为适合(参见下面的代码)。

结果是,我收到错误“在类 [...] 中找不到字段容器”和“在类 [...] 中找不到方法 encodePassword”,但描述缺少要使用的容器...

//MyProject\UserBundle\Entity\User.php
namespace MyProject\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\Role\Role;
use Symfony\Component\Security\Core\User\UserInterface;

//...

public function setPassword($password)
{
    $encoder = $this->container->get('security.password_encoder');
    $encoded = $encoder->encodePassword($this, $password);

    $this->password = $encoded;

    return $this;
}

//...

我只是错过了一个使用语句,还是更复杂?我正在查找几个链接,但发现了几个使用容器的使用语句,所以我不知道哪个是正确的......有什么建议吗?

提前致谢 ;)

4

1 回答 1

2

你需要定义一个方法 encodePassword 因为这不是一个原生的 SYmfony2 方法。例如,

private function encodePassword(User $user, $plainPassword)
{
    $encoder = $this->container->get('security.encoder_factory')
        ->getEncoder($user)
    ;

    return $encoder->encodePassword($plainPassword, $user->getSalt());
}
于 2015-02-02T16:14:36.617 回答