Symfony2 dyn. кодировка пароля

Я пытаюсь получить собственный 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;
}

//...

Я пропускаю только заявление об использовании, или оно более сложное? Я искал несколько ссылок, но нашел несколько операторов использования, которые используют контейнерные вещи, так что я понятия не имею, какой из них правильный … Есть предложения?

Заранее спасибо 😉

0

Решение

Вам нужно определить метод encodePassword, потому что это НЕ нативный метод SYmfony2. Например,

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

return $encoder->encodePassword($plainPassword, $user->getSalt());
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]