Я новичок в Symfony4, так что, возможно, это нубский вопрос. Но не могу понять это из.
Я пытаюсь зарегистрировать пользователя с помощью ajax-вызова:
this.form.post('/register').then((response) => {
console.info(response);
});
Тогда в symfony мой метод контроллера выглядит так:
/**
* @Route("/register", name = "register", methods = {"POST"})
* @param Request $request
* @param UserPasswordEncoderInterface $passwordEncoder
* @return JsonResponse
*/
public function register(Request $request, UserPasswordEncoderInterface $passwordEncoder)
{
$user = new User();
// encode the plain password
$user->setPassword(
$passwordEncoder->encodePassword(
$user,
$request->request->get('password')
)
);
$user->setEmail($request->request->get('email'));
$user->setName($request->request->get('name'));
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($user);
$entityManager->flush();
return $this->json(['success' => 'User created']);
}
Проблема в том, что данные всегда пусты. Данные отправляются корректно. Когда я добавляю ответ в свой контроллер, я вижу это:
Мои заголовки и т. д. выглядят так:
Полезная нагрузка запроса выглядит следующим образом:
Когда я пробую это с почтальоном, я получаю тот же результат. Что я могу делать неправильно?






Вам нужно создать тип формы на стороне сервера, чтобы проверить нового зарегистрированного пользователя, проверьте этот документация. Не забудьте также обновить контроллер.
В вашей ветке вы должны определить
<script>
let registerPath = "{{ app.request.getSchemeAndHttpHost() ~ path('register') }}";
</script>
И в вашем js вы можете использовать свой пост ajax следующим образом:
this.form.post(registerPath).then((response) => {
console.info(response);
});
Надеюсь, это может помочь :)
Спасибо, но это не проблема. Путь правильный.