Laravel 5 在 RouteServiceProvider 中找不到路由
Laravel 5 Route not Found in RouteServiceProvidor
PHP Fatal error: Class 'App\Providers\Route' not found in /home/****/**********/app/Providers/RouteServiceProvider.php on line 28
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'App\Providers\Route' not found
以上是我在尝试 运行 Artisan 时看到的错误。看来问题与我的过滤器(我正在尝试从 Laravel 4 迁移到 5)和命名空间有关。我有两个命名空间,我希望所有这些过滤器都适用于它们:"App\Http\Controllers\API\V1" 和 "App\Http\Controllers\API\V2",但我无法理解如何在 RouteServiceProvidor 文件中设置它。以下是从 RSP.php 到相关行的代码。
<?php namespace App\Providers;
use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider {
/**
* This namespace is applied to the controller routes in your routes file.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'App\Http\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @param \Illuminate\Routing\Router $router
* @return void
*/
public function boot(Router $router)
{
parent::boot($router);
//Challenges
Route::filter('challenge_general_permission', function($route)
有什么想法吗?
您的 PHP 文件位于 App\Providers
命名空间中。
namespace App\Providers;
您试图使用具有相对 class 名称引用的全局 class Route
。
Route::filter('challenge_general_permission', function($route)
当您执行此操作时,PHP 假定您想要 class App\Providers\Route
。没有这样的 class -- PHP 死了。您要么需要告诉 PHP 您想要全局 class Route
\Route::filter('challenge_general_permission', function($route)
或导入Route
到当前命名空间
namespace App\Providers;
//...
use Route;
@AlanStorms 的回答完全正确,但我想补充一点,您甚至不必使用 Route
外观。特别是在这种情况下,您可以直接使用 $router
对象。顺便说一句:Router
是 Route
门面的基础 class。我会这样做而不是你现在所拥有的:
public function boot(Router $router)
{
parent::boot($router);
//Challenges
$router->filter('challenge_general_permission', function($route)
PHP Fatal error: Class 'App\Providers\Route' not found in /home/****/**********/app/Providers/RouteServiceProvider.php on line 28
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'App\Providers\Route' not found
以上是我在尝试 运行 Artisan 时看到的错误。看来问题与我的过滤器(我正在尝试从 Laravel 4 迁移到 5)和命名空间有关。我有两个命名空间,我希望所有这些过滤器都适用于它们:"App\Http\Controllers\API\V1" 和 "App\Http\Controllers\API\V2",但我无法理解如何在 RouteServiceProvidor 文件中设置它。以下是从 RSP.php 到相关行的代码。
<?php namespace App\Providers;
use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider {
/**
* This namespace is applied to the controller routes in your routes file.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'App\Http\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @param \Illuminate\Routing\Router $router
* @return void
*/
public function boot(Router $router)
{
parent::boot($router);
//Challenges
Route::filter('challenge_general_permission', function($route)
有什么想法吗?
您的 PHP 文件位于 App\Providers
命名空间中。
namespace App\Providers;
您试图使用具有相对 class 名称引用的全局 class Route
。
Route::filter('challenge_general_permission', function($route)
当您执行此操作时,PHP 假定您想要 class App\Providers\Route
。没有这样的 class -- PHP 死了。您要么需要告诉 PHP 您想要全局 class Route
\Route::filter('challenge_general_permission', function($route)
或导入Route
到当前命名空间
namespace App\Providers;
//...
use Route;
@AlanStorms 的回答完全正确,但我想补充一点,您甚至不必使用 Route
外观。特别是在这种情况下,您可以直接使用 $router
对象。顺便说一句:Router
是 Route
门面的基础 class。我会这样做而不是你现在所拥有的:
public function boot(Router $router)
{
parent::boot($router);
//Challenges
$router->filter('challenge_general_permission', function($route)