Laravel Blade检查用户角色

时间:2016-05-03 15:32:36

标签: 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

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

如果用户是管理员,我的问题是如何在这里进行检查?

我有来自laravel的默认登录系统,我刚刚在表用户中添加了一个列 - &gt; (&#39; admin&#39;)tinyint值为1且在此视频中 https://www.youtube.com/watch?v=tbNKRr97uVs 我找到了用于检查用户是否为admin的代码

 if (!Auth::guest() && Auth::user()->admin )

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

2 个答案:

答案 0 :(得分:1)

            @if (!Auth::guest() && Auth::user()->admin)
                <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      

这只是为了清除(只需在用户表中再添加一列tinyint'admin'并设置为1)

答案 1 :(得分:0)

我发现自己忙得不可开交,检查是否已登录,检查角色,被添加到我所有的刀片文件中以分散注意力。您可以考虑添加定制刀片指令。在AppServiceProvider boot()函数中添加类似的内容

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

在刀片中只需使用

@admin
<p>Only admin sees this</p>
@endadmin