这次我们讲下Laravel8下的路由改动导致的踩坑。
我们看到Laravel官网在Laravel8文档中的发行说明最后有关于路由功能的更新说明,大致的意思就是laravel8的路由模式改变了,不再像8之前自动引入命名空间了,现在路由的写法也变了,接下来我们用代码来看下差异
-
Laravel8.x的路由
-
Laravel8之前的路由
-
从中可以看到新的路由采用了一个闭包的形式封装了之前在map方法下调用路由组的函数
-
而且Laravel8中在routes下的路由写法也变了
-
Laravel8.x
use App\Http\Controllers\Api\HomeController
...
Route::get('/',[HomeController::class,'index']);
- Laravel8之前
Route::get('/','HomeController@indx');
-
在发行说明中,Laravel其实也是挺友好的,为了防止我们众多的开发者一下子不习惯升级后的路由写法,还是保留了之前的路由写法的兼容
-
如果习惯了Laravel8的新路由写法可以忽略
-
如果没有习惯,我们可以在一下文件中增加一个参数
-
找到以下这个文件
App\Providers\RouteServiceProvider
- 在
public const HOME = '/home';
下增加一行参数
protected $namespace = 'App\Http\Controllers';
- 这样就可以使用Laravel8之前的路由写法啦