Вот что я работаю над тем, что я определил пользовательские типы пользователей с помощью пакета FOS для пользователей, также используя пакет sonata admin bundle, я успешно создал службы для администратора config.yml
, также сгенерирован ФОС объект пользователя в моей пользовательской пачкеСоздайте пользователя с помощью пакета FOS для пользовательского типа пользователя
sonata.admin.hrmanagement:
class: Namespace\Mybundlename\Admin\MyAdminClass
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "My user type" }
arguments: [null, Namespace\Mybundlename\Entity\FosUser, ~]
calls:
- [ setTranslationDomain, [NamespaceMybundlenameBundle]]
я импортировал выше YML в главном congig.yml в папке приложения, при создании пользователя я хочу, чтобы мой кодер безопасности хэш принятого простой пароля (создание/редактирование пользователь), успешно определил защитный кодер в основном security.yml, например
security:
encoders:
Namespace\Mybundlename\Entity\FosUser: sha512
Сейчас в MyAdminClass
я есть фильтры перед обновлением и после обновления, как я могу получить доступ к определенной выше кодером безопасности моего лица
public function preUpdate($object)
{
$salt = md5(time());
$encoderservice = $this->get('security.encoder_factory');// here is the problem i can't access
$encoder = $encoderservice->getEncoder($object);
$encoded_pass = $encoder->encodePassword($object->getPassword(),$salt);
$object->setSalt($salt);
}
является 'preUpdate (...)' метод, который вы пытаетесь использовать, и он работает не так, как ожидалось, или какая именно проблема здесь? – nifr
Проблема в том, что я не могу получить свой определенный 'security.encoder_factory' –