我正在制作简单的symfony api并对应用做出反应。我的反应应用程序以json格式将数据发送到symfony api。但是,我无法访问正在发送的数据。
以下是我的反应应用程序中组件中的功能 -
createProduct (event) {
event.preventDefault()
if(this.state.name.length === 0 ){
this.error = 'Name cannot be empty'
}else if(this.state.price === 0){
this.error = 'Price cannot be 0'
}else if(this.state.price < 0 ){
this.error = 'Price cannot be negative'
}else {
let data = []
data['name'] = this.state.name
data['price'] = this.state.price
ProductActions.addProduct(data)
}
}
这是实际的addProduct
操作 -
addProduct (data) {
console.log('made it')
let request = {
method: 'POST',
url: 'http://127.0.0.1:8000/product/post',
data: JSON.stringify(data),
contentType: 'application/json'
}
$.ajax(request)
.done(data => this.addProductSuccess(data))
.fail(err => this.addProductFail(err))
}
现在Symfony api - 这是照顾创造新产品的行动
/**
* Creates a new product entity.
* @Rest\Post("/post")
*/
function newAction(Request $request ) {
$body = $request->getContent();
$body = json_decode($body,true);
var_dump($body);
dump($body);
$logger = $this->get('logger');
$logger->error($request);
//$productPrice = $body['price'];
//$product = new Product($productName,$productPrice);
//$em = $this->getDoctrine()->getManager();
//$em->persist($product);
//$em->flush();
//$data['data'] = $product;
$data['body'] = $body;
return $data;
}
正如您所看到的,大部分代码都在评论中。原因是它不起作用。在这行代码之后,所有内容都会中断
$productPrice = $body['price'];
这是我收到的错误
未定义的索引:价格&#34;
此代码工作正常,我能够轻松地在请求的上下文中获取数据,但我决定开始使用FOSBundle,现在它无法正常工作。
正如您所看到的那样,var_dump($request)
以及dump($request)
尝试查看正在发送的请求。我也可以看到尝试将请求返回到我的react api以查看它但它不起作用,这是我得到的错误 -
序列化数据不支持资源
如果重要的话 - 我之前尝试过返回new View($data,{some response code})
但它会给出这个错误 -
未知密钥&#34;请求&#34;注释&#34; @FOS \ RestBundle \ Controller \ Annotations \ View
我不知道这意味着什么。它说明了这一切。如果我发送普通数组,它会说Unknown key '0'
而我没有@View这样的注释,说实话我不知道如何使用它们。
在尝试查看请求后,我使用了$logger
。这是实际发送的内容
POST / product / post HTTP / 1.1 Accept: / Accept-Encoding:gzip,deflate,br Accept-Language:en-US,en; q = 0.8 Connection:keep-alive Content-长度:2内容类型:application / json主机:127.0.0.1:8000来源:http://localhost:3000推荐人:http://localhost:3000/用户代理:Mozilla / 5.0(Linux; Android 6.0; Nexus 5 Build / MRA58N) AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 59.0.3071.115 Mobile Safari / 537.36 X-Php-Ob-Level:1 [] [] []
我无法以任何其他方式查看请求。
我见过教程,建议使用Symfony FormType来处理提交,但问题是我没有前端部分,并且首先没有创建表单。这个symfony API只是后端我不知道如果我要使用symfony表单,如何将反应应用程序中的数据发送到symfony api。
有人可以告诉我如何从请求中获取数据以及如何在return new View({any data}, {some response code})
给出Unknown key {whatever key I have sent}
后返回该数据吗?
答案 0 :(得分:0)
[已解决(种类)] - 创建要传递给symfony api的数据时,我发现由于某种原因我写了[]
而不是{}
这导致了错误,没有发送正确的值。
然而,这保留了问题的另一部分 - 如何使用@View。因为每当我尝试返回new View({some data}, {some response code});
时,它都会抛出错误。