在 laravel 5 中找不到类控制器

Posted

技术标签:

【中文标题】在 laravel 5 中找不到类控制器【英文标题】:Class Controller not found in laravel 5 【发布时间】:2016-02-16 03:14:01 【问题描述】:

所以我是 laravel 的新手,只是在尝试一些代码来清除基础知识,但是在创建一个新的控制器来处理路由之后。它抛出了一个致命的异常,说找不到类“控制器”!

(controller.php在同一目录下)

controller.php 代码是默认的

<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

abstract class Controller extends BaseController

    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

这是我的 PagesController.php 代码

<?php

class PagesController extends Controller

    public function home()
    
        $name = 'Yeah!';
        return View::make('welcome')->with('name',$name);
    

这是 route.php 代码

<?php

Route::get('/','PagesController@home');

welcome.blade.php 代码是默认代码,除了它显示变量 $name 而不是 laravel 5。 我哪里错了?

【问题讨论】:

确保你的控制器也被命名空间 【参考方案1】:

当您引用 extends Controller 之类的类时,PHP 会在您的 当前命名空间 中搜索该类。

在这种情况下,这是一个全局命名空间。但是Controller 类显然不存在于全局命名空间中,而是存在于App\Http\Controllers 中。

你需要在PagesController.php的顶部指定命名空间:

namespace App\Http\Controllers;

【讨论】:

我试过了,控制器工作了,但现在命名空间是控制器目录,我得到一个错误视图没有找到。任何其他选项 @gospelslide 您可以将use View; 添加到控制器顶部或使用别名view 像这样:return view('welcome')-&gt;with('name', $name);【参考方案2】:

您需要为 Controller 类指定命名空间:

class PagesController extends \App\Http\Controllers\Controller

否则Controller 会在默认根命名空间\ 中查找,但它并不存在。

【讨论】:

【参考方案3】:

我的问题是与扩展控制器的类中的类名不同,名称应该相同

【讨论】:

【参考方案4】:

如果您要在具有不同命名空间的子文件夹中创建控制器,请在您的控制器文件上使用它:

use App\Http\Controllers\Controller;

【讨论】:

以上是关于在 laravel 5 中找不到类控制器的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 4 中找不到类控制器

在 laravel 5.4 中找不到类“Illuminate\Foundation\Application”

在 laravel 5.2 中找不到类“Html”

在 laravel 5 中找不到助手类

在 Laravel 中找不到类“App\Http\Controllers\Excel”

在 Laravel 5 中找不到类“App\Http\Controllers\Artisan”