Laravel Blade 检查用户角色

lew*_*s4u 6 laravel-5.2 laravel-blade

在 laravel Blade 模板中,我们可以使用以下代码排除 HTML 的某些部分:

        @if (Auth::user())
            <li><a href="{{ url('/home') }}">Mein Profil</a></li>
            <li><a href="{{ url('/admin') }}">Admin</a></li>
        @else
            <li><a href="{{ url('/home') }}">Mein Profil</a></li>
        @endif
Run Code Online (Sandbox Code Playgroud)

如果用户通过身份验证,则显示主页和管理链接,如果用户未通过身份验证,则仅显示主页链接。

我的问题是如何在这里检查用户是否是管理员?

我有来自 laravel 的默认登录系统,我刚刚在表 users -> ('admin') 中添加了一列,tinyint 值为 1,在这个视频 https://www.youtube.com/watch?v=tbNKRr97uVs 中, 我找到了检查用户是否为管理员的代码

 if (!Auth::guest() && Auth::user()->admin )
Run Code Online (Sandbox Code Playgroud)

它在 AdminMiddleware.php 中工作,但在刀片中不起作用。如何使这个工作?

小智 7

我发现这么啰嗦,检查是否登录,检查角色,被添加到我的刀片文件周围来分散注意力。您可以考虑添加自定义刀片指令。将这样的内容添加到 AppServiceProvider boot() 函数

        Blade::if('admin', function () {            
            if (auth()->user() && auth()->user()->admin) {
                return 1;
            }
            return 0;
        });
Run Code Online (Sandbox Code Playgroud)

在刀片中使用

@admin
<p>Only admin sees this</p>
@endadmin
Run Code Online (Sandbox Code Playgroud)