无法使用Illuminate \ Routing \ Controller作为Controller,因为该名称已被使用

时间:2014-12-05 15:43:46

标签: php laravel laravel-5

我一直在学习使用Laravel,观看Larcast并使用Docs,我遇到了一个课程,其中描述了Eloquent,但我仍然坚持这个错误:

at HandleExceptions->fatalExceptionFromError(
  array(
    'type' => '64',
    'message' => 'Cannot use Illuminate\Routing\Controller as Controller because the name is already in use'
  )
)

我非常困惑,现在已经复制了提供的示例,但我仍然得到错误。我正在使用Laravel 5,因此我不知道是否存在一些无证的更改或者我是否只是做错了什么。我还没有找到解决问题的谷歌搜索中的相关内容,所以我希望有人可以提供帮助。以下是产生错误的代码:

<?php namespace App\Http\Controllers;

use Illuminate\Routing\Controller;

use App\VarName;

class VarController extends Controller {

    public function Var()
    {
        $Variable = VarName::get();

        dd($Variable);
    }
}

根据文档,这应该有效,并且在我观看的视频中,它确实有用..我错过了什么?

我尝试删除Controller类,因为它似乎是导致已经在使用中的错误,它破坏了所有内容,重新安装并尝试使用Controller,因为它扩展了雄辩的模型,但现在却说:

Pluralizer.php第258行中的ErrorException:call_user_func()期望参数1是有效的回调,找不到函数mb_strtolower或函数名无效

这超出了我对Laravel内部工作的理解,我被困住了,我不明白这个问题,根据文档我没有看到我的代码有什么问题,这似乎喜欢这么简单的一步。我试图做的就是从数据库中检索信息,发生了什么?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:20)

use Illuminate\Routing\Controller;语句失败,因为Controller命名空间中已有App\Http\Controllers个类。

要解决紧急问题,您可以在use语句中更改命名空间快捷方式:

use Illuminate\Routing\Controller as BaseController;

但是,针对您的具体问题的解决方案是您可能只想完全删除use Illuminate\Routing\Controller;声明。

在Laravel 5中,App\Http\Controllers\Controller类已经扩展了Illuminate\Routing\Controller类。目的是所有新控制器应该扩展App\Http\Controllers\Controller类。例如,请查看默认的App\Http\Controllers\HomeControllerApp\Http\Controllers\WelcomeController,因为它们都扩展了App\Http\Controllers\Controller类。

总之,您的两个选项是:

// rename the class in the use statement
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;

// note the name of the class being extended
class VarController extends BaseController {
    // snip
}

或者

// extend the existing App\Http\Controllers\Controller class
namespace App\Http\Controllers;

class VarController extends Controller {
    // snip
}

答案 1 :(得分:0)

这是因为存在重复项 enter image description here

解决方案是从导入中删除重复项 enter image description here

见附件样本