Я использую Symfony 2.8
веб-приложение, использующее FOSUserBundle
для управления пользователями. Создание новых пользователей с помощью веб-формы абсолютно не проблема.
Теперь я хотел бы добавить функцию для создания новых пользователей с REST API. Конечно, отправка имени пользователя, пароля, адреса электронной почты и т. Д. На контроллер не представляет особой проблемы:
public function registerAction(Request $request) {
$requestJson = json_decode($request->getContent(), true);
$username = $requestJson[JSON_KEY_USERNAME];
$email = $requestJson[JSON_KEY_MAIL];
$password = $requestJson[JSON_KEY_PASSWORD];
...
$this->registerUser($username, $email, $password);
...
}
private function registerUser($username, $email, $password, $locale, $timezone, $currency) {
$userManager = $this->get('fos_user.user_manager');
$emailExist = $userManager->findUserByEmail($email);
$userNameExists = $userManager->findUserByUsername($username);
if ($emailExist || $userNameExists)
return false;
$user = $userManager->createUser();
$user->setUsername($username);
$user->setEmail($email);
$user->setPlainPassword($password);
...
$user->setLocked(0);
$user->setEnabled(0);
$userManager->updateUser($user);
return true;
}
Однако это не выполняет никакой проверки вообще. Если, например, имя пользователя пусто, NotNullConstraintViolationException
выбрасывается при сохранении объекта пользователя.
Конечно, я мог бы вручную повторно реализовать тот же процесс проверки, который используется RegistrationForm (имя пользователя не пустое, не занято, недопустимые символы, минимальная длина пароля, формат электронной почты и т. Д.) И вернуть его обратно. сообщения об ошибках, но это означало бы заново изобретать колесо.
Возможно ли как-то запустить ту же самую проверку, которая используется в RegistrationForm?