首页 > 上网技巧 > 电脑小技巧 > laravel 5.0 升级 6.18 之 Route::controllers ...

laravel 5.0 升级 6.18 之 Route::controllers 的处理

时间:2020-10-27 19:31 作者:QQ地带 我要评论

Route::controllers 是 Laravel 老版本的语法,在 Laravel 6.x 中已经不再支持。需要进行兼容处理。
 
laravel 6.x 下报错
例如:
 
Route::controllers(['blog'=>'BlogController']);
报错
 
InvalidArgumentException : Attribute [controllers] does not exist.
 
Route::controllers 这种用法在 Laravel 5.3 之后已经被废弃,由于历史项目中大量这种旧有的写法,即,controller 代码中大量的 getXXX, postYYY 这样的函数名。逐个改函数名是不合适的,因为短时间无法确认哪些需要改,哪些不应该改。(例如,我就很喜欢以 get 开头命名函数名,但是又跟 Route::controllers 这种语法没有关系)。所以,我需要一个兼容的升级方案。
 
人民的大救星 Laravel Advanced Route
发现了 https://github.com/lesichkovm/laravel-advanced-route 这个库,可以完美兼容旧有语法,改造成本最低。
 
首先安装依赖:
 
composer require lesichkovm/laravel-advanced-route
但是在安装完成后检测 routes 文件时报错
 
@php artisan package:discover --ansi
InvalidArgumentException  : Attribute [controllers] does not exist.
我不理解为啥 composer 安装之后要检查一遍 routes 文件,难道是这个三方依赖自定义的逻辑?
 
不管了,尝试先注释掉原有 route 文件中的
 
Route::controllers
Route::controller
代码行。
 
然后再执行
 
composer require lesichkovm/laravel-advanced-route,
这样就成功了。再 git 回滚一下修改
 
git checkout -- routes/web.php 
以恢复原路由文件,将
 
Route::controllers,Route::controller 统一改成 AdvancedRoute::controllers 和 AdvancedRoute::controller。
 
这样就可以了。

标签: laravel
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告