2017-12-03 4 views
0

저는 laravel을 배우는 중이고 미들웨어에 머물러 있습니다. I 클래스 AdultMiddleware.php 있습니다Laravel의 수표 연령 미들웨어 사용

<?php 
namespace App\Http\Middleware; 

use Closure; 

class AdultMiddleware 
{ 

    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
    if (Session::get('age') < 18) { 
     return view('search'); 
    } 

    return $next($request); 
    } 
} 

을 그리고 Kernel.php 짧은 이름 : 당신이 루트에서 보는 바와 같이

Route::get('middle', array('as' => 'middle', 'age' => '16', 'before' => 'adult', function() 
{ 
    return view('welcome'); 
})); 

내가 설정 :

protected $routeMiddleware = [ 
     'adult' => \App\Http\Middleware\AdultMiddleware::class, 
]; 

그리고 web.php에서

나이는 16이지만 여전히 검색 대신 환영 받는다. 내가 뭘 잘못하고있어? 나는 그것이 초보자라고 들릴지도 모른다라는 것을 알고있다. 그러나 나는 google에 시험해 보았고, 어떤 운도 가지지 않고 있었다. 그게 내가 여기서 묻는 이유입니다.

답변

2

경로에 미들웨어를 할당 :

Route::get(..., ['middleware' => 'adult', ...]); 

Route::get(..., ...)->middleware('adult'); 

before

미들웨어 교체 필터 이후 Laravel에 더 이상 존재하지 않는 필터입니다.

Laravel Docs - 5.5 - Middleware - Assigning Middleware to routes

Laravel Docs - 5.2 - Middleware - Assigning Middleware to routes

Route::get('middle', ['as' => 'middle', 'middleware' => 'adult', function() { 
    return view('welcome'); 
}]); 
미들웨어 세션 변수를 확인려고하는 경우에, 당신은 당신이 원하는대로 세션 변수를 설정 할 수있는 경로를 추가 할 수 있습니다. 세션에 age 변수를 설정하고 '중간'경로로 리디렉션합니다

Route::get('set/age/{age}', function ($age) { 
    session(['age' => $age]); 

    return redirect()->route('middle'); 
}); 

.

또한 미들웨어에서보기를 반환하는 대신 검색 페이지로 리디렉션 할 수 있습니다.

+0

네,하지만 지금은 오류가 발생했습니다 :'클래스 'App \ Http \ Middleware \ Session'이 발견되지 않았습니다. 나이를 변수로 설정하고 싶습니다. 그래서 미들웨어가 작동하는지 테스트 할 수 있습니다. 테스트 용도로만 사용됩니다. – PhpNewbie

+1

클래스 이름 위에 세션 가져 오기. '세션 사용; –