无法在Symfony2 Angular2中接收请求参数

时间:2017-09-04 07:54:18

标签: php angular symfony

问题

  

我尝试使用$ request-> request-> all()// var_dump输出:array(0){}

symfony代码

public function registerAction(Request $request) {

   var_dump($request->request->all());die;
  }

Angular2服务

export class UserRegistrationService {

 constructor(private http: Http) { }

 private headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'});
 private insertdataUrl = 
'http://localhost/abc/web/app_dev.php/api/v1/register-user';


 /* create new user */
create(name: string): Promise<UserDetails> {

    return this.http
    .post(this.insertdataUrl, JSON.stringify({name: name}), {headers: this.headers})
    .toPromise()
    .then(res => res.json().data as UserDetails)
    .catch(this.handleError);
}

FORMDATA

  

{&#34; {名称&#34;电子邮件&#34;:&#34; abc@gmail.com",&#34;用户名&#34;:&#34; ABC&#34 ;, &#34;密码&#34;:&#34;的&#34;&#34; repeatpassword&#34;:&#34; &#34;}}:

有效的解决方案

$data = json_decode(file_get_contents('php://input'), true);

//能够获得参数//获取或//发布

任何人都可以建议为什么请求不会打印一些值。

  • 这里我发布了angular2的表格。

3 个答案:

答案 0 :(得分:1)

Symfony为Post和Get使用不同的容器。试试这种方式。

# Post
$request->request->all()

# Get
$request->query->all() 

答案 1 :(得分:0)

$this->getRequest()->request->all()

答案 2 :(得分:0)

对我有用的解决方案

我更改了标题

  private headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'});

 private headers=new Headers({ 'Content-Type': 'application/json' });
  • 现在能够收到数据。