Laravel 7 - 当可选参数为空时重定向到主页

Laravel 7 - Redirects to the main page when the optional parameter is empty

我在 web.php 中有一个带有可选参数的路由:
我的web.php:(有问题的路由标出注释)

Route::middleware(['auth', 'dashboard'])->group(function () {
    Route::get('/', 'DashboardController@home')->name('root');

    Route::prefix('/drivers')->group(function () {
        Route::view('/', 'dashboard.driver.main');
        Route::post('/', 'UserController@addDriver');

        Route::get('/{id}', function ($id) {
            if (Auth::user()->can('view_user')) {
                $user = User::find($id);
                return view('dashboard.user.view', ['user' => $user]);
            }
            return view('pages.403');
        });


       //----------------------------------------
       // My route with the problem
       // ---------------------------------------
        Route::get('/driver-dropdown/{q?}', function ($q=null){
            return $q;
        })->name('driver.dropdown');
    });
});

这是我的 dashboard 中间件:

public function handle($request, Closure $next)
{
    if(!in_array(\Auth::user()->getOriginal('role'), ['superadmin', 'admin', 'supporter']) )
    {
        return abort(403);
    }
    return $next($request);
}

当我输入 host-name/drivers/driver-dropdown/jo URL 时,我得到 jo
BUT 当我输入 host-name/drivers/driver-dropdown/ URL 时,我将被重定向到 host-name/ ,这意味着根路由!

编辑: 已更新 web.php

如果我是正确的,你的分组路线中的 URL 不应以 / 开头,当然主路线除外。我也遇到过这个问题。

应该是这样的:

Route::middleware(['auth', 'dashboard'])->group(function () {
    Route::get('/', 'DashboardController@home')->name('root');
 
    Route::prefix('drivers')->group(function () {
        Route::get('driver-dropdown/{q?}', function ($q=null){
            return $q;
        })->name('driver.dropdown');
    });
});

您应该像这样重新排序您的路线:

        Route::get('/driver-dropdown/{q?}', function ($q=null){
            return $q;
        })->name('driver.dropdown');

        Route::get('/{id}', function ($id) {
            if (Auth::user()->can('view_user')) {
                $user = User::find($id);
                return view('dashboard.user.view', ['user' => $user]);
            }
            return view('pages.403');
        });

目前,当您前往 host-name/drivers/driver-dropdown/ 时,它将匹配 /{id} 路线。