我一直在学习使用 Laravel,观看 Larcasts 并使用文档,我遇到了一个描述 Eloquent 的类(class),但我遇到了错误:
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 类,因为它似乎是导致 already in use 错误的原因,它破坏了一切,重新安装并尝试只使用 Controller,因为它扩展了 Eloquent 模型,但现在它说:
Pluralizer.php 第 258 行中的 ErrorException:call_user_func()
期望参数 1 是一个有效的回调,未找到函数 mb_strtolower
或函数名称无效
这超出了我对 Laravel 内部工作原理的理解,我卡住了,我不明白这个问题,根据文档,我没有发现我的代码有任何问题,这似乎是一个如此简单的步骤。我只想从数据库中检索信息,这是怎么回事?
在此先感谢您的帮助!
最佳答案
use Illuminate\Routing\Controller;
语句失败,因为 App\Http\Controllers
命名空间中已经有一个 Controller
类.
要解决眼前的问题,您可以更改 use 语句中的命名空间快捷方式:
use Illuminate\Routing\Controller as BaseController;
但是,针对您的特定问题的解决方案是您可能只想完全删除 use Illuminate\Routing\Controller;
语句。
在 Laravel 5 中,App\Http\Controllers\Controller
类已经扩展了 Illuminate\Routing\Controller
类。目的是所有新 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
}
关于php - 无法将 Illuminate\Routing\Controller 用作 Controller ,因为该名称已被使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27319560/