Php Laravel 7-当可选参数为空时重定向到主页面
我在Php Laravel 7-当可选参数为空时重定向到主页面,php,laravel,laravel-7,Php,Laravel,Laravel 7,我在web.php中有一个带有可选参数的路由: myweb.php:(出现问题的路线用注释标记) Route::中间件(['auth','dashboard'])->组(函数(){ 路由::获取('/','DashboardController@home')->name('root'); 路由::前缀('/drivers')->组(函数(){ 路由::视图(“/”,“dashboard.driver.main”); 路由::post('/','UserController@addDriver')
web.php
中有一个带有可选参数的路由:
my
web.php
:(出现问题的路线用注释标记)
Route::中间件(['auth','dashboard'])->组(函数(){
路由::获取('/','DashboardController@home')->name('root');
路由::前缀('/drivers')->组(函数(){
路由::视图(“/”,“dashboard.driver.main”);
路由::post('/','UserController@addDriver');
路由::get('/{id}',函数($id){
if(Auth::user()->can('view\u user')){
$user=user::find($id);
返回视图('dashboard.user.view',['user'=>$user]);
}
返回视图('page.403');
});
//----------------------------------------
//我的路线有问题
// ---------------------------------------
路由::get('/driver dropdown/{q?}',函数($q=null){
返回$q;
})->名称('driver.dropdown');
});
});
它是我的仪表板中间件:
公共函数句柄($request,Closure$next)
{
如果(!在数组中(\Auth::user()->getOriginal('role'),['superadmin','admin','supporter']))
{
返回中止(403);
}
返回$next($request);
}
当我输入主机名/驱动程序/驱动程序下拉列表/jo
URL时,我得到jo
但是当我输入主机名/驱动程序/驱动程序下拉列表/
URL时,我将被重定向到主机名/
,这意味着根路由
编辑:更新了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::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?}',函数($q=null){
返回$q;
})->名称('driver.dropdown');
路由::get('/{id}',函数($id){
if(Auth::user()->can('view\u user')){
$user=user::find($id);
返回视图('dashboard.user.view',['user'=>$user]);
}
返回视图('page.403');
});
当前,当您转到主机名/驱动程序/驱动程序下拉列表/
,它将匹配/{id}
路由。主机名/驱动程序/驱动程序下拉列表(没有最后一个斜杠)会发生什么情况?@wschopohl相同的问题您是指此链接中的代码吗@哈米德:我已经更新了我的答案。你能告诉我这是否有效吗?同样的问题!但是我更新了我的问题web.php
。这是我的全部路线