Я использую пакет администрирования Sonata для моего приложения, все работает хорошо, в моем приложении у меня есть пользователи и admin, admin может добавлять/редактировать/удалять пользователей, когда я пытаюсь обновить у пользователя возникает проблема, когда данные пароля переопределяются из таблицы пользователей. я переопределил метод администратора admin preUpdate
, я получил $object
, у которого есть экземпляр менеджера сущности пользователя, поэтому, если пользователь уходит, чтобы обновить пароль и сохранить данные, пароль будет потерян.Symfony 2 Получить исходные данные сущности из диспетчера объектов
public function preUpdate($object)
{
$Password = $object->getUserPassword();
if (!empty($Password)) { /* i check here if user has enter password then update it goes well*/
$salt = md5(time());
$encoderservice = $this->getConfigurationPool()->getContainer()->get('security.encoder_factory');
$User = new User();
$encoder = $encoderservice->getEncoder($User);
$encoded_pass = $encoder->encodePassword($Password, $salt);
$object->setUserSalt($salt)->setUserPassword($encoded_pass);
} else { /* here i try to set the old password if user not enters the new password but fails */
$object->setUserPassword($object->getUserPassword());
}
}
Когда я пытаюсь установить $object->setUserPassword($object->getUserPassword());
он получает нулевое и обновляет пароль утратившим его не получает редактирования данных я пытался получить репозиторий (ниже), чтобы получить пароль, но не повезло его не получить то же самое
$DM = $this->getConfigurationPool()->getContainer()->get('Doctrine')->getManager()->getRepository("...")->find(id here);
есть ли способ я могу получить доступ к исходным данным текущему объекту в менеджере сущностей
Я попробую это –