最近因为工作需要,入门下php的laravel框架开发,在B站上找到“李炎恢”老师的快速入门课程,在动手跟着老师的代码进行实践的时候,在第二节课程“02路由的定义控筛制器”这节课就被卡住了。报一下错误:
在这里简单的记录一下,解决思路,希望能帮助到遇到同样问题的同学快速出坑。
1.首先核对代码有没有写错。
为了在实践中增加熟悉度,代码都是手写的。为了查看是否有字母写错的低级错误,把自己写的备份一下,让后把老师提供的资料中的代码全部复制进来,执行结果和自己写的一样仍然报错。反复观看这一节课程视频后,确认自己复制过程没有bug,排除了代码书写错误的问题。
2.不是代码的问题,那就说明是框架的问题。想到在第一节课中说到,laravel版本的更新,有可能是哪里框架配置不一样了,需要改动,于是就在网上百度。百度方法,就是把报错内容“Illuminate\Contracts\Container\BindingResolutionException Target class [TaskController] does not exist.” 复制到搜索框里进行搜索。找到一种方法说执行更新命令: 1、在项目根目录执行命令
composer dump-autoload
//或
php artisan optimize
执行后还是无效。排除是缓存相关的问题 3。让后继续百度搜索,找到一个不一样的方法,就是修改laravel的RouteServiceProvider文件。具体位置是:app\Providers\RouteServiceProvider.php 中找到
//这一行代码如果没有就添加上,如果有就把注释打开
protected $namespace = 'App\\Http\\Controllers';
让后执行php artisan optimize ,再去浏览器刷新就可以看到输出的内容了。以上就是解决报错的全部过程。 最后,还发现一点点问题,就是每次添加路由后,立即访问是不生效的,必须执行php artisan optimize 后才可以生效。这个应该是配置的问题,还没有查看怎么修改。 当写这个bug解决方法的文章的时候,在百度搜索,发现有人说这个laravel版本的问题,在laravel 8版本中,路由方法进行了修改。所以按照李炎恢老师的教程去实践会遇到这个bug。 而李炎恢老师的视频应该也有一段时间了。所以最好的学习方法,就是多看新版本的文档哦。 希望能帮助到后来的学习者,李炎恢老师的教程没有问题,而是框架版本更新的问题。新手请多多留意