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 聊聊, 查看更多联系方式