在laravel 5中找不到类控制器

时间:2015-11-14 17:44:13

标签: php laravel laravel-5 laravel-routing

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

(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。 我错了什么?

4 个答案:

答案 0 :(得分:6)

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

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

您需要在PagesController.php

的顶部指定命名空间
namespace App\Http\Controllers;

答案 1 :(得分:0)

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

class PagesController extends \App\Http\Controllers\Controller

否则在默认根名称空间Controller中查找\,它不存在。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

use App\Http\Controllers\Controller;