【问题标题】:How to check parameter(in route) before go to controller class in laravel8如何在laravel 8中进入控制器类之前检查参数(在路由器中)
【发布时间】:2022-01-23 10:36:54
【问题描述】:

我有以下路线

  1. /product/category?item=1
  2. /product/category?item=2

所以,我想检查item 参数并像这样转到特定的控制器类。

Route::get('/product/category', function (Request $request) {
  if($request->input('item') == 1)
      return HomeController's item1 (Function)
  else
      return HomeController's item2 (Function)
});

在 Laravel8 中可以吗? 所有的laravel文档都是这样直接写到控制器的。但是,我想在去控制器之前检查参数。

Route::get('__url', [__Controller::class, '__function']);

【问题讨论】:

    标签: php laravel-8


    【解决方案1】:

    你可以使用 laravel 容器:

    Route::get('/product/category', function (Request $request, HomeController $controller) {
      if($request->input('item') == 1)
          return $controller->item1();
      else
          return $controller->item2();
    });
    

    【讨论】:

      【解决方案2】:

      您可以在 laravel-8 中以 slug 的形式获取项目并调用控制器的方法,如下所示

      use App\Http\Controllers\HomeController;
      
      Route::get('/product/category/{item}', function($slug, HomeController $controller){
          if($slug == 1):
              return $controller->item1();
          else:
              return $controller->item2();        
          endif;    
      });
      

      【讨论】:

      • 感谢您的回答。我知道​​在路由中获取“项目”参数的方法,但我不明白如何在检查参数项目后返回控制器类。这点 if($request->input('item') == 1) =====> return HomeController 的 item1 (Function) else =====> return HomeController 的 item2 (Function)
      • @Deathnote 请检查我编辑的答案
      猜你喜欢
      • 1970-01-01
      • 2017-11-21
      • 2020-02-08
      • 2021-12-12
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 2013-04-03
      相关资源
      最近更新 更多