Laravel:如何检查刀片模板中的中间件

mar*_*ros 0 laravel laravel-5 laravel-middleware laravel-5.3

我创建了中间件

php artisan make:middleware isTeacher
Run Code Online (Sandbox Code Playgroud)

在 App/Http/isTeacher.php 中我放置了检查:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class isTeacher
{
  public function handle($request, Closure $next)
  {
    $user = Auth::user();

    if($user && $user->capability == 3)
    {
        return $next($request);
    }
    else
        return redirect('/login');
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,我在 app/Http/Kernel.php 中定义了中间件

protected $routeMiddleware = [
    ...
    'auth.teacher' => \App\Http\Middleware\isTeacher::class,
    ...
];
Run Code Online (Sandbox Code Playgroud)

问题是:如何在刀片模板中查看教师能力?我正在尝试这样做:

@if (Auth::isTeacher())
Run Code Online (Sandbox Code Playgroud)

但不起作用

任何帮助表示赞赏

小智 11

Blade 指令只需要返回 true 或 false,不需要其他。

boot()您可以在方法中执行以下操作AppServiceProvider.php

Blade::if('teacher', function () {
    return auth()->user() && $user->capability == 3;
});
Run Code Online (Sandbox Code Playgroud)

然后您将能够在刀片模板中执行以下操作:

@teacher
  Only teachers will see this
@endteacher
Run Code Online (Sandbox Code Playgroud)