2016-04-29 4 views
0

Ich mag nur HTTP-Middleware zur Filterung von Benutzerrolle hinzufügen, aber ich bekomme diese Fehlermeldung:Reflection - Klasse existiert nicht nach auf Laravel http Middleware zu schaffen 5

ReflectionException in Container.php line 779: Class create:comptable does not exist

in Container.php line 779 
at ReflectionClass->__construct('create:comptable') in Container.php line 779 
at Container->build('create:comptable', array()) in Container.php line 659 
at Container->make('create:comptable', array()) in Application.php line 644 
at Application->make('create:comptable') in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101 
at Pipeline->then(object(Closure)) in Router.php line 703 
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 670 
at Router->dispatchToRoute(object(Request)) in Router.php line 628 
at Router->dispatch(object(Request)) in Kernel.php line 214 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 43 
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17 
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55 
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61 
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36 
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40 
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101 
at Pipeline->then(object(Closure)) in Kernel.php line 115 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84 
at Kernel->handle(object(Request)) in index.php line 53 
at require_once('C:\wamp\www\Medecin2016\public\index.php') in server.php line 21 

Und das ist, was ich tue: middlerware erstellen "create":

<?php namespace App\Http\Middleware; 

use Closure; 

class CreateInfos { 

    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next,$comptable) 
    { 
     $User = $request->user(); 
     return ($User->hasRole($comptable)) ? $next($request) : response(view('errors.503'),401); 
    } 

} 

Stellen Sie einen kurzen Namen von Kernel.php Datei bearbeiten:

<?php namespace App\Http; 

use Illuminate\Foundation\Http\Kernel as HttpKernel; 

class Kernel extends HttpKernel { 

    /** 
    * The application's global HTTP middleware stack. 
    * 
    * @var array 
    */ 
    protected $middleware = [ 
     'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', 
     'Illuminate\Cookie\Middleware\EncryptCookies', 
     'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 
     'Illuminate\Session\Middleware\StartSession', 
     'Illuminate\View\Middleware\ShareErrorsFromSession', 
     'App\Http\Middleware\VerifyCsrfToken', 
    ]; 

    /** 
    * The application's route middleware. 
    * 
    * @var array 
    */ 
    protected $routeMiddleware = [ 
     'auth' => 'App\Http\Middleware\Authenticate', 
     'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 
     'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', 
     'create' => 'App\Http\Middleware\CreateInfos', 
     'update' => 'App\Http\Middleware\UpdateInfos', 
     'delete' => 'App\Http\Middleware\DeleteInfos', 
    ]; 

} 

und das Hinzufügen der Middleware auf die Routen-Datei:

Route::get('profile/diplomes'   ,['middleware'=>'create:comptable','uses'=>'[email protected]']); 
Route::post('profile/diplomes'   ,['middleware'=>'create:comptable','uses'=>'[email protected]']); 
Route::post('profile/update/diplomes' ,['middleware'=>'create:comptable','uses'=>'[email protected]']); 
Route::post('profile/delete/diplomes' ,['middleware'=>'create:comptable','uses'=>'[email protected]']); 
+0

Dieses Problem dadurch nicht lösen, aber man konnte diese 'fusionieren erstellen ',' update' und 'delete' Middlewares in eine 'Permission'-Middleware, da man nur überprüft, ob der Benutzer trotzdem eine Berechtigung per Name hat. – James

+0

Versuchen Sie, 'rm -rf bootstrap/cache/*' auszuführen. – James

+0

Ich bin auf Laravel 5? Was ist dieser Befehl? –

Antwort

0

Nach Änderung Middleware von Routen in diesem, um es an die Steuerung und fügen:

use App\Http\Middleware\CreateInfos; 

class ProfileFormsController extends Controller { 
    public function __construct() 
    { 
     $this->middleware('create'); 
    }