我创建了一个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] ... 我如何获取值(源,用户姓氏等)。
谢谢您的帮助。
答案 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