2015-03-19 2 views
2
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) и Namespacing. У меня есть два пространства имен, для которых я хочу, чтобы все эти фильтры применимы к: «App \ Http \ Controllers \ API \ V1» и «App \ Http \ Controllers \ API \ V2», но не могут на всю жизнь понять, как установите это в файле RouteServiceProvidor. Ниже приведен код от RSP.php до соответствующей строки.Laravel 5 Маршрут не найден в RouteServiceProvidor

<?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) 

Любые идеи?

ответ

2

@AlanStorms ответа на совершенно правильно, но я хотел бы добавить, что вы даже не необходимо использовать фасад Route. Особенно в этом случае, когда у вас есть объект $router. Кстати, Router является базовым классом фасада Route. Я бы сделал это вместо того, что у вас есть сейчас:

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

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

Ваш PHP-файл находится в пространстве имен App\Providers.

namespace App\Providers; 

Вы пытались использовать глобальный класс Route с относительной ссылкой имени класса.

Route::filter('challenge_general_permission', function($route) 

Когда вы сделаете это, PHP предполагает, что вы хотите, класс App\Providers\Route. Нет такого класса - PHP умирает. Вы либо должны сказать PHP вы хотите глобальный класс Route

\Route::filter('challenge_general_permission', function($route) 

или импортировать Route в текущее пространство имен

namespace App\Providers; 
//... 
use Route; 
Смежные вопросы