如何在路由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
之前。
通常我倾向于使用 only
或 except
从资源路由中删除路由以减少它们,例如:
Route::resource('photo', 'PhotoController', ['only' => [
'index', 'show'
]]);
我认为甚至不可能添加更多(我的意思是不在同一行)。
TLDR:如果您需要自定义路由,请不要使用 Route::resource()
,请改用 Route::get()
和 Route::post()
,在大括号中添加路由参数,如
Route::get('/users/{username}', 'UsersController@show');
我试图在 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
之前。
通常我倾向于使用 only
或 except
从资源路由中删除路由以减少它们,例如:
Route::resource('photo', 'PhotoController', ['only' => [
'index', 'show'
]]);
我认为甚至不可能添加更多(我的意思是不在同一行)。
TLDR:如果您需要自定义路由,请不要使用 Route::resource()
,请改用 Route::get()
和 Route::post()
,在大括号中添加路由参数,如
Route::get('/users/{username}', 'UsersController@show');