我一直在学习使用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内部工作的理解,我被困住了,我不明白这个问题,根据文档我没有看到我的代码有什么问题,这似乎喜欢这么简单的一步。我试图做的就是从数据库中检索信息,发生了什么?
提前感谢您的帮助!
答案 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\HomeController
或App\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)