Laravel Controller不存在,即使它显然存在

时间:2014-06-13 13:19:47

标签: php laravel laravel-4

我得到的错误是控制器不存在,即使我知道它,这是代码。

Route.php

Route::get('mdpay/template', array("uses" => "templateController@index"));

templateController.blade.php

class templateController extends BaseController {

  public function index()
  {
    echo "made it";
  }


}

为什么我会收到此错误:类TemplateController不存在

=================更新:==================

好的,所以我创建了正确的路线,重命名了我的文件,并更正了班级名称,我仍然想出了这个错误。

文件名:

templateController.php

// File Name: TemplateController.php
class TemplateController extends BaseController {
    public function index()
    {
        // app/views/myView.blade.php
        echo "hello";
    }
}

我的路线是:

Route::get('mdpay/template', array("uses" => "TemplateController@index"));

仍然接收控制器不存在错误。我的所有其他控制器(其他3个)都在工作,除了这个。

4 个答案:

答案 0 :(得分:5)

如果您使用的是标准编辑器类图自动加载器,则每次创建新文件时都需要composer dumpautoload

所以用Laravel给出的标准作曲家设置来创建一个新的控制器:

  1. 在名为app/controllers
  2. TemplateController.php中创建新文件
  3. 打开终端并运行composer dumpautoload
  4. 正如之前的用户所说,只有视图文件应以.blade.php结尾。

答案 1 :(得分:4)

如果您使用的是 Laravel 8,请将此行添加到您的 RouteServiceProvider.php(您可以使用 CTRL + P 进行搜索):

protected $namespace = 'App\Http\Controllers';

这为我解决了这个问题。

答案 2 :(得分:2)

应该是:

// File Name: TemplateController.php
class TemplateController extends BaseController {
    public function index()
    {
        // return "made it"; // or
        // app/views/myView.blade.php
        return View::make('myView');
    }
}

路线:

Route::get('mdpay/template', array("uses" => "TemplateController@index"));

blade中使用Blade view,即myView.blade.php基本上存储在app/views/文件夹中。详细了解Laravel网站上的blate template

答案 3 :(得分:0)

控制器位于app/controllers目录中,除非您拥有自己的命名空间结构,否则应该保留在那里。

您获得Class TemplateController does not exist的原因是因为它不是,首先,您的类名为templateController,其次,它存在为templateController.blade.php,不会被加载就这样。

刀片文件适用于视图,只有app/views或自定义视图目录中的视图应以.blade.php结尾。

创建文件app/controllers/TemplateController.php并向其添加以下代码。

class TemplateController extends BaseController {

    public function index()
    {
        echo "made it";
    }

}

现在在命令行上运行命令composer dumpautoload并将路由声明更改为:

Route::get('mdpay/template', array('uses' => 'TemplateController@index"));

现在它应该全部工作。