无法声明类Controller,因为该名称已在使用中

Res*_*had 12 laravel laravel-5

我最近将laravel 4.2项目迁移到了5.0.到目前为止,我已经完成了所有必要的步骤,但我一直收到错误.

无法声明类Controller,因为该名称已在使用中

我的控制器已根据升级指南中的laravel提供的更改.

<?php

use Illuminate\Foundation\Bus\DispatchesCommands;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;

abstract class Controller extends BaseController {

    use DispatchesCommands, ValidatesRequests;

}
Run Code Online (Sandbox Code Playgroud)

我还将它添加到我的composer.json的classmap指令中.

"autoload": {
    "classmap": [
        "database",
        "app/Http/Controllers"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},
Run Code Online (Sandbox Code Playgroud)

到目前为止我找不到任何解决方案,所以如果你们知道该怎么做它会帮助我很多:)提前感谢!

Eri*_*ker 16

"app/Http/Controllers"从您的类图中删除.

namespace App\Http\Controllers;use块上方添加.

然后跑 composer dump-auto


Mar*_*liu 14

如果您的控制器位于文件夹而不是 app/Http/Controller 中,您应该像这样声明该命名空间:

namespace App\Http\Controllers\folderName;
Run Code Online (Sandbox Code Playgroud)

笔记:

也许您正在扩展基础Controller,所以您还应该添加以下内容:

use App\Http\Controllers\Controller;
Run Code Online (Sandbox Code Playgroud)

否则会出现这个错误:

 Class 'App\Http\Controllers\Controller' not found 
Run Code Online (Sandbox Code Playgroud)


Gor*_*man 8

我很确定您必须添加命名空间。

命名空间

默认情况下,Laravel 4 应用程序不会在你的应用程序代码中使用命名空间。因此,例如,所有 Eloquent 模型和控制器都位于“全局”命名空间中。为了更快地迁移,您也可以简单地将这些类保留在 Laravel 5 的全局命名空间中。