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 对象。顺便说一句:RouterRoute 门面的基础 class。我会这样做而不是你现在所拥有的:

public function boot(Router $router)
{
    parent::boot($router);

    //Challenges
    $router->filter('challenge_general_permission', function($route)