Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 7-当可选参数为空时重定向到主页面_Php_Laravel_Laravel 7 - Fatal编程技术网

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
。这是我的全部路线