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

文章目录

    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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式