douxiuyi6529 2016-04-29 09:17
浏览 85

ReflectionException - 在Laravel 5上创建http中间件后,类不存在

I just want to add HTTP middleware for filtering user role but I get this error:

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

And this is what I do: Create middlerware "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);
    }

}

Set a short name by editing Kernel.php file:

<?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',
    ];

}

And adding the middleware to Routes file:

Route::get('profile/diplomes'           ,['middleware'=>'create:comptable','uses'=>'ProfileFormsController@getFormDiplomes']);
Route::post('profile/diplomes'          ,['middleware'=>'create:comptable','uses'=>'ProfileFormsController@postDiplomes']);
Route::post('profile/update/diplomes'   ,['middleware'=>'create:comptable','uses'=>'ProfileFormsController@updateDiplomes']);
Route::post('profile/delete/diplomes'   ,['middleware'=>'create:comptable','uses'=>'ProfileFormsController@deleteDiplomes']);
  • 写回答

1条回答 默认 最新

  • douna1941 2016-04-29 09:55
    关注

    After change middleware from routes to controller and add this to it:

    use App\Http\Middleware\CreateInfos;
    
    class ProfileFormsController extends Controller {
        public function __construct()
        {
            $this->middleware('create');
        }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)