在 laravel 5 中找不到类控制器

问题描述 投票:0回答:5

所以我是 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
5个回答
10
投票

当您引用像

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

在这种情况下,这是一个全局命名空间。然而,

Controller
类显然不存在于全局命名空间中,而是存在于
App\Http\Controllers
.

需要在顶部指定命名空间

PagesController.php

namespace App\Http\Controllers;

2
投票

您需要为您的

Controller
类指定命名空间:

class PagesController extends \App\Http\Controllers\Controller

否则

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


0
投票

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


0
投票

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

use App\Http\Controllers\Controller;

0
投票

在您的 routes/web.php 中,使用 PagesController 的命名空间,例如。

<?php
  use App\Http\Controllers\Controller\PagesController;

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

这将使您能够访问 PagesController 类。

© www.soinside.com 2019 - 2024. All rights reserved.