简体   繁体   English

Symfony 3(FOSrestBundle)+ Angular 1 POST请求为空

[英]Symfony 3(FOSrestBundle) + Angular 1 POST request is empty

Here is my Angular service : 这是我的Angular服务

restFactory.getCalcPrice = function (data) {
    return $http({
        url:"/api/calc",
        method:"POST",
        data:{"data": data},
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    })
};

FOSRestBundle config : FOSRestBundle配置

fos_rest:
param_fetcher_listener: true
body_listener: true
body_converter:
    enabled: true
routing_loader:
    default_format: json
view:
    view_response_listener: 'force'
    mime_types:
        json: ['application/json', 'application/json;version=1.0', 'application/json;version=1.1']
format_listener:
    rules:
        - { path: ^/api, priorities: [ json ], fallback_format: json, prefer_extension: true }
        - { path: ^/, priorities: [ 'html', '*/*'], fallback_format: ~, prefer_extension: true }

And Symfony 3 contoller : 和Symfony 3 控制器

    /**
   * @Post("/calc")
   * @View()
   * @return array
   */
  public function getCalcPrice(Request $request)
  {
    $req = $request->request->all();
    $data = $req['data'];
    $data = array(
      "data" => $data // in Angular recieving null
    );

    return $data;
  }

So the problem is when I posting some data from Angular I can't get it in Symfony. 所以问题是当我从Angular 发布一些数据时,我无法在Symfony中获得它。 GET request working fine. GET请求工作正常。 Any suggestions? 有什么建议么? :) :)

This is screenshot from Chrome debug: 这是Chrome调试的屏幕截图: 在此处输入图片说明

According to the API doc for Request class property $request->request gives you access to all $_POST params but you're sending your data as JSON in payload: 根据Request属性的API文档, $request->request可让您访问所有$_POST参数,但您将数据作为JSON发送到有效负载中:

So you should call method getContent() and decode it manually: 因此,您应该调用方法getContent()并对其进行手动解码:

$content = $request->getContent();
$json = json_decode($content, true);
$data = $json['data'];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM