【问题标题】:Checking route parameters are a specific value?检查路由参数是否为特定值?
【发布时间】:2021-02-28 01:46:25
【问题描述】:

我的路线:

Route::get('/{type?}/{filter?}', [IndexController::class, 'index']);

有没有办法,比如表单请求,我可以检查 $type$filter 是否是特定值,例如 $filter 等于 new 或者可能是 trending

我考虑过仅将有限数量的选项指定为路由本身:

Route::get('/books/new', [IndexController::class, 'index']);

但是我无法在控制器中获取这些参数。请注意,我不希望每个 $type 都有单独的控制器。

【问题讨论】:

    标签: php laravel laravel-routing


    【解决方案1】:

    您可以将路由参数限制为正则表达式,如in the documentation 所述。

    Route::get('/{type?}/{filter?}', [IndexController::class, 'index'])
        ->where(['filter' => '^(new|trending)$']);
    

    但我认为将此逻辑集中在控制器中会更有意义:

    public function index(string $type, string $filter)
    {
        switch ($type) {
            case "books":
                // do something
                break;
            case "films":
                // do something
                break;
            default:
                abort(404);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-27
      • 2017-07-06
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 2014-07-21
      相关资源
      最近更新 更多