【问题标题】:Laravel: how to pass GET array to controller?Laravel:如何将 GET 数组传递给控制器​​?
【发布时间】:2021-06-11 14:11:31
【问题描述】:

如何将 GET 参数数组传递给控制器​​?

这是我的路线文件routes/web.php:

<?php
use Illuminate\Support\Facades\Route;
use GuzzleHttp\Client;

Route::get('/ids', 'Parser@getIds');

还有我的控制器'app/Http/Controllers/Parser.php':

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class Parser extends Controller
{
  public function getIds(Request $request) {
    return response()->json($request); // ???
  } 
}

所以,我希望得到一个这样的参数数组:

$ids = [1,2,15,25];

但如果我将 GET 数组传递给我的路由路径:http://example.com/ids?ids[]=1&amp;ids[]=2&amp;ids[]=15&amp;ids[]=25

我还是得到了一个空的请求对象:

{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}

【问题讨论】:

  • 反应很好。方法 json 返回一个数组编码到 json。如果您只想返回响应。你可以这样做:return $request; 这返回你的请求。
  • 我对您的示例进行了编码,它可以正常工作,没有任何错误或结果符合预期。
  • @MAY 感谢您的帮助。我不知道为什么,但如上所述,我在 json 响应中有一个空的 'request:{}' 对象。然后$ids = request('ids', []); 对我来说效果很好。

标签: php laravel routes get controller


【解决方案1】:

从 GET 获取数据的方法很少。 试试这样的:

$ids = request('ids', []); // global helper, empty array as default

或:

$ids = $request->input('ids', []); // via injected instance of Request

更多信息您可以获取in documentation

【讨论】:

  • 这是正确的,但更具体地说,如果您在方法中注入Request,则应为request()-&gt;query('ids');$request-&gt;query('ids')。您也可以传递一个默认值。 query('ids', [])
  • request('ids') 也可以,但最好注意传递一个默认值。在这种情况下会有所帮助。
  • 非常感谢。 $ids = request('ids', []); 效果很好。
猜你喜欢
  • 1970-01-01
  • 2015-01-23
  • 2019-08-12
  • 2021-12-30
  • 2021-08-19
  • 2018-12-22
  • 2018-05-31
  • 1970-01-01
  • 2016-01-05
相关资源
最近更新 更多