2017-02-22 16 views
0
//blade 
@if(middleware('foo')) 

    pass  

@else 

    not pass 

@endif 

//Route 
Route::group(['middleware' => ['foo']], function(){ 

У меня есть страница, необходимая для определения того, проходит ли пользователь промежуточного программного обеспечения и отображает различное содержимое в клинке.Laravel обнаружить промежуточное ПО внутри лезвия

его пользовательское промежуточное программное обеспечение для входа, а не одно из оригинала laravel.

anyonw знает, как достичь этого?

ответ

2

Промежуточное программное обеспечение используется для фильтрации HTTP-запросов, а не для того, что отображается или нет. Вы можете фильтровать функцию контроллера только для использования, если она проходит промежуточное программное обеспечение (если, например, аутентифицировано), и контроллер выполняет только функцию, если она передает промежуточное программное обеспечение. Мне кажется, вы пытаетесь показать различный контент для пользователей, прошедших проверку подлинности, вы можете использовать лезвие на фасаде Auth.

@if(Auth::check()) 
    pass  
@else 
    not pass 
@endif 

Если вы по каким-то причинам не хотите использовать фасад Auth, вы всегда можете использовать переменный сеанс и сделать проверку с использованием так.

// Midleware 
Session::set('IPassedTheMiddleware','true'); 

//View 

@if(Session::get('IPassedTheMiddleware') == 'true') 
    pass  
@else 
    not pass 
@endif 

Подробнее об аутентификации здесь https://laravel.com/docs/5.4/authentication

3

Просто передайте логическую переменную в контроллер, как это:

public function handle($request, Closure $next) { 
    return $next($request, true); 
} 

затем передать переменную к виду:

public function controller(Request $request, $isMiddlewareSet) { 
    return view('view',['isMiddlewareSet'=>$isMiddlewareSet]); 
} 

и, наконец, использовать его в целях лезвия:

@if($isMiddlewareSet) 
    //middleware is detected 
@else 
    //middleware is not set 
@endif