如何从Controller(Symfony)中的formData获取帖子值

时间:2019-01-14 14:43:01

标签: symfony

我创建了一个REST Api。我从前面用axios发送帖子值。 (我使用ReactJS)。在Back with Symfony中,在我的控制器中,我想获取帖子值。我能怎么做 ?我做到了:

从前面:

timeit

然后从Controller的背面尝试:

const data = new FormData();

       let postData = {
            source: 'lcl',
            userLastname: lastname,
            userFirstname: firstname,
            text: message,
        }

data.append('data', postData);

Axios.post('http://127.0.0.1:8000/send', data)
        .then(function (response) {
            console.log(response);
        })
        .catch(function (error) {
            console.log(error)
        });

值返回[object Object] ... 我如何获取值(源,用户姓氏等)。

谢谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您应该解码数据:

$data = $request->request->get('data');

if (!empty($data)) {
    $array = json_decode($data, true); // 2nd param to get ass array
    $userLastname =  $array['userLastname']; // etc...
}

现在$array将是一个包含您的JSON数据的数组。删除json_decode()调用中的true参数值以获得一个stdClass对象。

答案 1 :(得分:-1)

[object Object]

如果JS将对象转换为字符串,则会发生这种情况,那么您的有效负载将永远无法到达后端。调用$ request-> request-> get('source')等即可。

发生这种情况是因为您将其附加到将隐式转换为字符串的formdata对象中,请尝试仅传递postData而不是传递数据。这样您就会成功。

就像

Axios.post('http://127.0.0.1:8000/send', postData)

编辑: 抱歉,请求转换可能是可选的。从fosrestbundle转到Param侦听器,或使用https://github.com/symfony-bundles/json-request-bundle