在Laravel 5.1中找不到"Class'app\Http\Controllers\Controller'

The*_*ark 3 php laravel laravel-routing laravel-5

我对Laravel很新,当我遇到这个错误时,我正在阅读教程.这是我在'testController.php'中的代码.

<?php

namespace app\Http\Controllers;

use app\Http\Controllers\Controller;

class testController extends \app\Http\Controllers\Controller {

public function getAbout()
{
    return view('Learning.about') ;
}

public function getHome()
{
    return view('Learning.index');
}

}
Run Code Online (Sandbox Code Playgroud)

这是我的'routes.php'.

<?php
Route::get('test', [
   'as' => 'test', 
   'uses' => 'testController@getHome',
]);

Route::get('about', [
    'as' => 'about', 
    'uses' => 'testController@getAbout',
]);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

未找到类'app\Http\Controllers\Controller'

我该如何解决这个错误?

Ris*_*ana 5

让我们一步一步来看看.

1.检查composer.json上的autoload指令

composer.json在项目根目录中打开文件.找到该autoload部分.应该看起来像这样:

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

确保在psr-4选项下有此配置:

"App\\": "app/"
Run Code Online (Sandbox Code Playgroud)

此配置告诉作曲家我们要app使用psr-4约定自动加载目录中的所有类,并将其置于App命名空间下.

2.更新您的控制器

首先,您的控制器文件名应该是CamelCase样式.所以我们必须将其重命名为TestController.php.确保它保存在app/Http/Controllers目录下.

现在打开你的TestController.php文件,我们必须像这样大写命名空间和类名:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class TestController extends Controller {
    public function getAbout()
    {
        return view('Learning.about') ;
    }

    public function getHome()
    {
        return view('Learning.index');
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,我们也改变了这一行:

class testController extends \app\Http\Controllers\Controller
Run Code Online (Sandbox Code Playgroud)

成:

class TestController extends Controller
Run Code Online (Sandbox Code Playgroud)

由于我们已经导入了基Controller类,因此我们不必指定完全限定名.我们Controller使用use关键字导入了类:

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

保存TestController.php文件.

3.更新您的路线文件

现在我们必须更新我们的app\Http\routes.php文件.我们只需要大写控制器名称:

<?php

Route::get('test', ['uses' => 'TestController@getHome', 'as' => 'test']);

Route::get('about', ['uses' => 'TestController@getAbout', 'as' => 'about']);
Run Code Online (Sandbox Code Playgroud)

4更新自动装带器

现在最后要做的事情.打开终端/命令提示符.转到项目目录并运行以下命令:

composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

此命令将更新自动加载器文件(在此处阅读更多内容).

现在,如果您打开浏览器并点击/test路线,您应该看到来自的内容resources/views/Learning/index.blade.