我试图在symfony 2.4控制器中获取POST请求的变量。我通常没有任何问题,但对于这一个...
这就是我打电话给控制器的方式:
var deferred = $q.defer();
$http({method:'POST',data:{dimensionpassed:dimension},url:Routing.generate('_API_getTree')}).success(function(result){
deferred.resolve(result);
});
return deferred.promise;
现在,当我查看控制台时,我可以看到帖子请求:
JSON
dimensionpassed
"ChartOfAccounts"
Source
{"dimensionpassed":"ChartOfAccounts"}
这是控制器:
public function _API_getTreeAction(Request $request)
{
$test = $request->getContent();
var_dump($test);
$test = $request->request->get('dimensionpassed');
var_dump($test);
}
第一个var转储给了我 " {" dimensionpassed":" ChartOfAccounts"}"
所以有一些东西!
但第二个只是" NULL"
我做错了什么?
答案 0 :(得分:2)
显然,Angularjs $ http post变量不会转到$ _POST变量,因此不可能将它们放在$ request-> request-> all()中。
然而,它们显示为“原始”,因为您可以使用它们:$ request-> getContent();
只需使用$ myvar = json_decode($ request-> getContent())即可实现技巧
答案 1 :(得分:1)
我根本不知道angularjs,但它看起来像是身体中的JSON,而不是请求身体参数。
尝试:
var_dump($request->request->all());
如果您要发送帖子参数,您应该看到类似的内容:
array'dimensionsed'=>字符串'ChartOfAccounts'
请求正文应该类似于:
'dimensionpassed = ChartOfAccounts'
所以你可能只需要让你的Javascript工作正常(不能抱歉)。