【问题标题】:Class Controller not found in laravel 5在 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。 我哪里错了?

【问题讨论】:

  • 确保你的控制器也被命名空间

标签: php laravel laravel-5 laravel-routing


【解决方案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;
      

      【讨论】:

        猜你喜欢
        • 2016-01-11
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        • 2014-09-25
        • 2020-11-19
        • 1970-01-01
        • 2021-08-17
        相关资源
        最近更新 更多