我正在尝试传递一个带有两个属性的params对象,
到Laravel并通过$request
对象访问属性。我收到如下所示的错误。我怎么能做到这一点?
角:
return $http({
method: 'GET',
url: url + 'questions/check',
cache: true,
params: {
id: params.question_id, // 1
choices: params.answer_choices // [3, 2]
}
});
Laravel:
$input = $request->all();
return $input; //output: {choices: "2", id: "1"}
return $input['choices']; //output: 2
显然,嵌套的choices
数组(应该是[3, 2]
)不会在这里传递。
我也尝试过关注laravel docs,其中声明:
使用“数组”输入处理表单时,可以使用点表示法 访问数组:
$ input = Request :: input('products.0.name');
我试过了:
$input = $request->input('choices.1'); //should get `2`
return $input;
什么都不返回。
编辑:我可以告诉选择数组是使用值3和2发送的,但我不确定如何从Laravel Request对象中获取它们:
请求URI:GET /api/questions/check?choices=3&choices=2&id=1 HTTP/1.1
来自:
的回复 $input = $request->all();
return $input;
答案 0 :(得分:2)
您需要以与构建网址格式的表单请求相同的方式设置密钥。
return $http({
method: 'GET',
url: url + 'questions/check',
cache: true,
params: {
id: params.question_id, // 1
"choices[]": params.answer_choices // [3, 2]
}
});
然后,服务器会收到questions/check?id=1&choices[]=3&choices[]=2
$http
服务将您的参数展平为查询字符串。出于某种原因,为了让服务器将查询字符串作为数组读取,添加必需的括号是不够智能的。