Symfony控制器无法接收AngularJS表单发布数据

时间:2016-07-19 12:45:53

标签: angularjs symfony

尝试从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); 
}

如果数据不存在,结果为'默认值'。

1 个答案:

答案 0 :(得分:0)

public function replyAction(Request $request) {
$data = json_decode($request->getContent(), true);
$request->request->replace($data);

echo $request->request->get('foosdaasd');
}