尝试从AngularJS表单发送$ http.post请求到Symfony控制器,以将表单内容添加到数据库。我可以通过“状态”获得成功响应:AngularJS方面有200个。
但是,在Symfony控制器中,$ request-> getContent()为空,不返回任何内容; $ request-> getMethod()返回'GET',这对我没有任何意义。如何在Symfony中发布数据?
P.S。安装了FOSRestBundle并启用了主体监听器,param fetcher listener。
我知道我的问题与POST Ajax request by AngularJS to Symfony controller重复,但这篇文章的2个答案对我不起作用。
我的blog.html.twig,
<form name="replyForm" ng-submit="sendReply(blog.id)">
Preview: {{'{{reply.content}}'}} <br><br>
My Reply: <input type="text" name="content" ng-model="reply.content" />
<input type="submit" value="Reply" />
</form>
blog.js,
$scope.reply = {};
$scope.sendReply = function(blogId){
$scope.reply.blog = blogId;
$http.post('http://localhost/app_dev.php/blogReply', $scope.reply, {'Content-Type': 'application/x-www-form-urlencoded'})
.then(function(data){
$scope.message = angular.fromJson(data);
}, function(data){
$scope.message = angular.fromJson(data) || "Request failed";
});
$scope.reply = {};
}
Symfony blogController,
/**
* @Route("/blogReply", name="blogReply")
*/
public function replyAction(Request $request){
$data = $request->request->get('data', 'default value if data does not exist');
return new Response ($data);
}
如果数据不存在,结果为'默认值'。
答案 0 :(得分:0)
public function replyAction(Request $request) {
$data = json_decode($request->getContent(), true);
$request->request->replace($data);
echo $request->request->get('foosdaasd');
}