所以我是 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。 我错了什么?
当您引用像
extends Controller
这样的类时,PHP会在您的当前命名空间中搜索该类。
在这种情况下,这是一个全局命名空间。然而,
Controller
类显然不存在于全局命名空间中,而是存在于 App\Http\Controllers
. 中
需要在顶部指定命名空间
PagesController.php
:
namespace App\Http\Controllers;
您需要为您的
Controller
类指定命名空间:
class PagesController extends \App\Http\Controllers\Controller
否则
Controller
在默认根命名空间 \
中查找,它不存在。
我的问题是类名与扩展控制器的类中的类名不同,名称应该相同
如果您在具有不同命名空间的子文件夹中创建控制器,请在您的控制器文件中使用它:
use App\Http\Controllers\Controller;
在您的 routes/web.php 中,使用 PagesController 的命名空间,例如。
<?php
use App\Http\Controllers\Controller\PagesController;
Route::get('/','PagesController@home');
这将使您能够访问 PagesController 类。