如何在路由Laravel中添加参数?

How to add paraeters in routing Laravel?

我试图在 Laravel 中为资源添加路由参数:

Route::resource('place', 'Dashboard\PlaceController', ["parameters" => ["roles" => "Admin"]]);

然后我显示路由数组:

$actions = $request->route()->getAction();
        dd($actions);

我得到了没有参数的数组 roles:

array:7 [▼
  "middleware" => array:3 [▶]
  "as" => "place.index"
  "uses" => "App\Http\Controllers\Dashboard\PlaceController@index"
  "controller" => "App\Http\Controllers\Dashboard\PlaceController@index"
  "namespace" => "App\Http\Controllers"
  "prefix" => null
  "where" => []
]

有一个 artisan 命令可以用来检查你有哪些路线,它是 php artisan route:list

我认为这里的问题是您正在使用 Route::resource,根据 documentation 它会使用预定义的通常对 CRUD 有用的端点填充您的路由。

如果你想对参数有更多的控制权,我建议你覆盖一些路由,把路由线放在你的 Route::resource 之前。

通常我倾向于使用 onlyexcept 从资源路由中删除路由以减少它们,例如:

Route::resource('photo', 'PhotoController', ['only' => [
    'index', 'show'
]]);

我认为甚至不可能添加更多(我的意思是不在同一行)。

TLDR:如果您需要自定义路由,请不要使用 Route::resource(),请改用 Route::get()Route::post(),在大括号中添加路由参数,如

Route::get('/users/{username}', 'UsersController@show');