Laravel 路由传递附加变量

Laravel Route pass additional variables

我有一个用户控制器,其中 returns 个用户列表,每个用户属于不同的组。

ex:- $groups = ['student_users' => 1, 'teacher_users' => 2, .....]

我可以创建如下所示的路由来访问它们

Route::get('users/{id}', [
        'as'            =>  'user',
        'uses'          =>  'Admin\UserController@listUser'
    ]);

但我想创建更用户友好或 seo 友好的像这样说

Route::get('users/student', [
        'as'            =>  'student',
        'uses'          =>  'Admin\UserController@listUser'
    ]);

Route::get('users/teacher', [
        'as'            =>  'teacher',
        'uses'          =>  'Admin\UserController@listUser'
    ]);
Route::get('users', [
        'as'            =>  'student',
        'uses'          =>  'Admin\UserController@listUser'
    ]);//by default shows students list.

我想通过路由而不是 url 传递 ID。最好的方法是什么。

做如下操作

Route::get('users/student', [
    'as'            =>  'student',
    'type'          =>  'student',
    'uses'          =>  'Admin\UserController@listUser'
]);

在控制器中你可以得到type如下

public function listUser(\Illuminate\Http\Request $request)

   $action = $request->route()->getAction();
   dd($action['type']); 
}

type 只是一个例子。您可以传递任何变量。

希望对您有所帮助。