Я пытаюсь получить собственный 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;
}
//...
Я пропускаю только заявление об использовании, или оно более сложное? Я искал несколько ссылок, но нашел несколько операторов использования, которые используют контейнерные вещи, так что я понятия не имею, какой из них правильный … Есть предложения?
Заранее спасибо 😉
Вам нужно определить метод encodePassword, потому что это НЕ нативный метод SYmfony2. Например,
private function encodePassword(User $user, $plainPassword)
{
$encoder = $this->container->get('security.encoder_factory')
->getEncoder($user)
;
return $encoder->encodePassword($plainPassword, $user->getSalt());
}
Других решений пока нет …