我有导航栏,如果登录的用户是管理员,我想显示指向管理员仪表板的链接.如果没有,它应该什么都不显示.我和客人有类似的东西,例如
@if (Auth::guest())
<li><a href="{{ url('/auth/login') }}">Login</a></li>
<li><a href="{{ url('/auth/register') }}">Register</a></li>
@else
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ Auth::user()->name }} <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="{{ url('/profile') }}">Profile</a></li>
<li><a href="{{ url('/auth/logout') }}">Logout</a></li>
</ul>
</li>
@endif
Run Code Online (Sandbox Code Playgroud)
但是,如何为登录用户和管理员执行此操作?我现在有
<ul class="nav navbar-nav">
<li><a href="{{ url('/') }}">Home</a></li>
@if (Auth::guest())
@else
<li><a href="{{ url('/admin') }}">Admin Dashboard</a></li>
@endif
</ul>
Run Code Online (Sandbox Code Playgroud)
我在管理路由上设置了中间件,就像这样
Route::get('admin', ['middleware' => 'admin', 'uses' => 'AdminController@index']);
Run Code Online (Sandbox Code Playgroud)
看起来像
public function handle($request, Closure $next)
{
if ($request->user()->role != 1)
{
return redirect('home');
}
return $next($request);
}
Run Code Online (Sandbox Code Playgroud)
这没关系,我只是不知道如何定义刀片模板的一部分.
看起来您的用户模型具有一个名为的属性role
,因此您可以执行以下操作:
<ul class="nav navbar-nav">
<li><a href="{{ url('/') }}">Home</a></li>
@if (Auth::user()->role != 1)
{{-- I am not an admin user --}}
@else
{{-- I am an admin user --}}
@endif
</ul>
Run Code Online (Sandbox Code Playgroud)
如果不是您的情况,则需要向用户模型添加新属性.通过这种方式,您可以模拟上面的代码.
为了更好的代码结构和顺序,我建议你在用户模型中做一个功能,如下所示:
public function isAdmin(){
return (\Auth::check() && $this->role == 1);
}
Run Code Online (Sandbox Code Playgroud)
或另一个检查它是否是普通用户:
/** An user who is authenticated but it is not an admin */
public function isRegular(){
return (\Auth::check() && $this->role != 1);
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的应用程序和视图中,您可以使用它们,如:
@if (Auth::user()->isRegular())
{{-- I am not an admin user --}}
@else
{{-- I am an admin user --}}
@endif
Run Code Online (Sandbox Code Playgroud)
要么
@if (Auth::user()->isAdmin())
{{-- I am an admin user --}}
@else
{{-- I am not an admin user --}}
@endif
Run Code Online (Sandbox Code Playgroud)