Я хочу знать, как проверить произвольный пароль на соответствие правилам проверки, определенным в validation.xml
. Я создал страницу администратора, где пользователи-администраторы могут создавать других пользователей-администраторов. Я хочу проверить этих пользователей, используя те же правила, которые используются, когда анонимные пользователи регистрируются для своей учетной записи на странице /register
. Насколько я вижу, эти правила определены в validation.xml
.
Итак, в основном я хочу сделать что-то вроде этого:
$userManager = $container->get('fos_user.user_manager');
$user = $userManager->createUser();
$user->setPlainPassword('1');
$arrayOfErrors = functionThatValidatesUserPassword($user);
или даже вызвать функцию для пароля напрямую следующим образом:
$arrayOfErrors = functionThatValidatesUserPassword('1');
Что мне следует использовать вместо functionThatValidatesUserPassword
здесь?
Я думал, что служба проверки может работать, но когда я пытаюсь
$validator = $this->get('validator');
$errors = $validator->validate($user);
print_r($errors);exit;
Я просто получаю пустой список ошибок. Я ожидал увидеть сообщение об ошибке «Слишком короткий пароль», которое вы получите, если зарегистрируете учетную запись с тем же паролем на странице /register
.
Я использую Symfony 3.4 и FosUserBundle 2.0.
В поисках ответов на свой вопрос я нашел следующие два сообщения, описывающие, как переопределить правила, определенные в файле validation.xml
.
- проверка пароля fosuserbundle
- FOSUserBundle – Проверка полей имени пользователя, пароля или электронной почты
Я планирую переопределить правила проверки, но сейчас я просто хочу проверить свой пароль, используя встроенные правила, которые поставляются с FosUserBundle.
createUser()
возвращает Entity, служба проверки должна работать. Какой версией СФ пользуетесь? - person bangbambang   schedule 06.12.2017$userManager->updatePassword($user)
? - person bangbambang   schedule 06.12.2017$validator->validate($user)
? - person Cave Johnson   schedule 07.12.2017updateUser($user, false)
илиupdatePassword($user)
должен запускать базовые прослушиватели без сброса UoW (просто на всякий случай). Опять же, я никогда не использовал FosUserBundle широко, и у меня нет времени на настройку тестового проекта, так что это просто предположение. - person bangbambang   schedule 07.12.2017