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

更新日期: 2020-07-21 阅读次数: 3249 字数: 374 分类: Laravel

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。

这样就可以了。

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式