我的Laravel应用中有两个身份验证系统-一个用于用户,一个用于管理员。我正在Laravel 6中使用make:auth的安装随附的导航栏。当用户登录时,导航栏在我的所有路径中都可以正常工作。但是,带有管理员名称的导航栏的右侧显示出行为,我无法解释。
以下是有问题的导航栏部分:
<ul class="navbar-nav ml-auto">
<!-- Authentication Links -->
@guest
<li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
</li>
@if (Route::has('register'))
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
</li>
@endif
@else
<li class="nav-item dropdown">
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
{{ Auth::user()->first_name }} <span class="caret"></span>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
{{ __('Logout') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
@csrf
</form>
</div>
</li>
@endguest
</ul>
</div>
管理员登录后,他们将被路由到/ admin。 AdminController返回admin.blade.php视图。此视图扩展layouts.admin。 layouts.admin文件包含导航栏。管理员登陆到/ admin页面后,其名称将正确显示在导航栏的右侧。但是,当管理员转到任何其他页面时(这些路由的视图都在单独的文件夹中),导航栏将恢复为将管理员视为访客,并且不显示其名称。
我的第一个想法是以某种方式使用View Composer,但这似乎不是问题。我无法理解{{Auth :: user()-> first_name}}如何能够首先获取已登录Admin的名称。我认为这需要使用{{Auth :: guard('admin')-> first_name}}