Symfony4请求数据与Ajax调用一起为空

时间:2019-02-13 15:53:52

标签: php laravel symfony

我是Symfony4的新手,所以也许这是一个菜鸟问题。但无法确定 出来。

我正在尝试使用ajax调用注册用户:

this.form.post('/register').then((response) => {
    console.log(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']);
}

问题在于数据始终为空。数据已正确发送。当我在控制器中添加响应时,会看到以下信息:

enter image description here

我的标题等如下:

enter image description here

请求有效负载如下:

enter image description here 当我与邮递员尝试时,我得到相同的结果。我可能做错了什么?

2 个答案:

答案 0 :(得分:0)

您需要在后端侧创建一个表单类型以验证您的新注册用户,请选中此documentation。不要忘记也要更新控制器。

答案 1 :(得分:-1)

必须在树枝上定义

aws s3 rb s3://bucket-name --force

在您的js中,您可以像这样使用ajax帖子:

<script> let registerPath = "{{ app.request.getSchemeAndHttpHost() ~ path('register') }}"; </script>

希望可以帮助您:)