在刚接触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 '这个是测试';
   }
}

的,可以正常访问的控制器代码如下: