【问题标题】:getting query parameters from URL in laravel 7.1从 laravel 7.1 中的 URL 获取查询参数
【发布时间】:2020-09-12 07:52:20
【问题描述】:

作为一个学习练习,我正在 Laravel 7.1 中创建一个 REST API。我无法弄清楚如何解析路由方法中的查询字符串参数。我已阅读文档here,它显示了如何将参数添加到路径中:

Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});

但是,我看不到您可以从请求 URL 中获取查询参数的位置。在我的玩具代码中,我想添加一条将新车添加到库存的路线:

Route::post('/inventory/add/{make}/{model}/{year}', function ($make, $model, $year) {
    return \App\Inventory::create($model, $color, $trim, $accessories);
});

我想通过查询字符串指定颜色、装饰、配饰等参数,像这样:

http://example.com/inventory/add/ford/focus/2020?color=red&trim=sport&accessories=chrome-wheels

如何从Route::post 方法中获取查询参数?

编辑 我想这种架构可能不是添加这些额外信息的最佳方式,但由于我正在尝试学习 laravel,所以我以它为例。我更感兴趣的是学习如何获取查询参数,而不是如何改进这个学习示例的架构。

【问题讨论】:

    标签: laravel routes


    【解决方案1】:

    Route::post 不需要在路由中设置参数。只需使用:

    Route::post("your-route", "YourControllerController@doSomeThing");
    

    所以,在app/Http/Controllers/YourControllerController.php 文件中:

    class YourControllerController extends Controller {
    
    public function doSomeThing(Request $request)
    {
        echo $request->input('param1');
        echo $request->input('param2');
        echo $request->input('param3');
    }
    

    【讨论】:

      【解决方案2】:

      您只需将请求实例注入您的处理程序(无论是闭包或控制器方法),然后询问您的参数。

      $color = $request->query('color', 'default-color');
      
      //And so on...
      

      https://laravel.com/docs/7.x/requests#retrieving-input

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-08
        • 2017-09-28
        • 2018-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-22
        • 2016-06-25
        相关资源
        最近更新 更多