我尝试使用以下指南获取自己的UserBundle来处理sf 2.6.3:Symfony Book。
我已将该示例代码粘贴到用户实体中的setPassword方法中(不知道这是否意味着如何使用),将其更改为适合(请参阅下面的代码)。
它出来了,我收到了一个错误的字段容器,没有在课程中找到[...]'和[...]'中找不到的方法encodePassword,但描述中缺少使用哪个Container ......
//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;
}
//...
我只会错过使用声明,还是更复杂?我正在查找几个链接,但发现了几个使用容器的用法语句,所以我不知道哪个是正确的...有什么建议吗?
提前致谢;)
答案 0 :(得分:2)
您需要定义一个方法encodePassword,因为这不是本机SYmfony2方法。例如,
private function encodePassword(User $user, $plainPassword)
{
$encoder = $this->container->get('security.encoder_factory')
->getEncoder($user)
;
return $encoder->encodePassword($plainPassword, $user->getSalt());
}