Class 在 laravel 5 中找不到控制器
Class Controller not found in laravel 5
所以我是 laravel 的新手,只是尝试一些代码来清除基础知识,但是在创建一个新的控制器来处理 route.It 之后抛出一个致命异常说 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。
我错了什么?
您需要为您的 Controller
class:
指定命名空间
class PagesController extends \App\Http\Controllers\Controller
否则 Controller
在默认根命名空间 \
中查找,但它不存在。
当您引用 class 时,例如 extends Controller
PHP 在您的 当前命名空间 中搜索 class。
在本例中,这是一个全局命名空间。但是 Controller
class 显然不存在于全局命名空间中,而是存在于 App\Http\Controllers
.
中
您需要在 PagesController.php
的顶部指定命名空间:
namespace App\Http\Controllers;
我的问题是 class 名称与 class 中扩展控制器的名称不同,名称应该相同
如果您要在具有不同命名空间的子文件夹中创建控制器,请在您的控制器文件中使用:
use App\Http\Controllers\Controller;
所以我是 laravel 的新手,只是尝试一些代码来清除基础知识,但是在创建一个新的控制器来处理 route.It 之后抛出一个致命异常说 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。 我错了什么?
您需要为您的 Controller
class:
class PagesController extends \App\Http\Controllers\Controller
否则 Controller
在默认根命名空间 \
中查找,但它不存在。
当您引用 class 时,例如 extends Controller
PHP 在您的 当前命名空间 中搜索 class。
在本例中,这是一个全局命名空间。但是 Controller
class 显然不存在于全局命名空间中,而是存在于 App\Http\Controllers
.
您需要在 PagesController.php
的顶部指定命名空间:
namespace App\Http\Controllers;
我的问题是 class 名称与 class 中扩展控制器的名称不同,名称应该相同
如果您要在具有不同命名空间的子文件夹中创建控制器,请在您的控制器文件中使用:
use App\Http\Controllers\Controller;