在刚接触laravel框架时,按照文档自己写了一个控制器,并在控制器中写了了一个index方法,结果提示了好几个错误:
Class 'App\Http\Controllers\BaseController' not found Trait 'App\Http\Controllers\AuthorizesRequests' not found Trait 'App\Http\Controllers\DispatchesJobs' not foun
我的控制器方法代码如下:
namespace App\Http\Controllers; class WelcomeController extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; //这里使用了这三个类,顶部必须use引用相对应的三个类。如果没有使用会弹出错误提示 public function index(){ return '这个是测试'; } }
根据错误提示知道是缺失对应的文件,但是刚接触,不明白为什么会缺失文件,我看的文档,参考的教程都可以正常使用的啊 。经过反复查看代码,和网上查阅资料,找到了错误的原因。
是因为编辑器自动写入了 use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 这行代码就要求控制器必须引入相应的文件,参考 laravel默认的controller控制器,得知在顶部缺少引用:
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests;
把这个引用添加上,就不在报错可以正常访问了。
另外:class WelcomeController extends BaseController {}这句的extend继承也有需要注意的。如果继承的是BaseController ,则必须在添加
use Illuminate\Routing\Controller as BaseController;
如果只是继承controller则不用添加上面一行use 的代码。
最终正确
namespace App\Http\Controllers; use Illuminate\Routing\Controller as BaseController; //缺失会报Class 'App\Http\Controllers\BaseController' not found use Illuminate\Foundation\Auth\Access\AuthorizesRequests; //缺失会报 Trait 'App\Http\Controllers\AuthorizesRequests' not found use Illuminate\Foundation\Bus\DispatchesJobs; //缺失会报Trait 'App\Http\Controllers\DispatchesJobs' not found use Illuminate\Foundation\Validation\ValidatesRequests; class WelcomeController extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; //这里使用了这三个类,顶部必须use引用相对应的三个类。如果没有使用会弹出错误提示 public function index(){ return '这个是测试'; } }
的,可以正常访问的控制器代码如下: