将嵌套的参数数组传递给laravel请求对象

时间:2015-10-19 01:03:52

标签: php arrays angularjs laravel laravel-5

我正在尝试传递一个带有两个属性的params对象,

  • 一个ID
  • 一个数组

到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;

enter image description here

1 个答案:

答案 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服务将您的参数展平为查询字符串。出于某种原因,为了让服务器将查询字符串作为数组读取,添加必需的括号是不够智能的。