Laravel 5:如果用户已登录,则更改导航栏

boc*_*ior 30 php blade laravel-5

我对Laravel,MVC和模板引擎一般都是新手.

如果用户已登录,我需要显示某些导航栏按钮和选项,例如:通知,注销,配置文件等...否则会显示"登录"按钮.

如何以正确的方式解决这个问题的任何帮助都非常感谢.这就是我现在正在考虑的事情:

  • User对象总是传递给视图.
  • 视图检查是否User已设置(意味着已登录)以包含导航栏的相应部分刀片模板.

app.blade.php:

...
@if (isset($user))
     @include('partials.navbarlogged')

@else
     @include('partials.navbar')
...
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗?谢谢你的时间!

Jbw*_*ms1 60

如果您使用Laravel 5的内置用户模型,您可以这样做

@if (Auth::check())
  //show logged in navbar
@else
  //show logged out navbar
@endif
Run Code Online (Sandbox Code Playgroud)


小智 26

对于laravel 5.7及更高版本,请使用@auth和@guest指令。这里是官方文档

@auth
   // The user is authenticated...
@endauth
@guest
   // The user is not authenticated...
@endguest
Run Code Online (Sandbox Code Playgroud)

您可以指定使用@authand @guest指令时应检查的身份验证保护 :

@auth('admin')
    // The user is authenticated...
@endauth

@guest('admin')
    // The user is not authenticated...
@endguest
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用@unless指令:

@unless (Auth::check())
    You are not signed in.
@endunless
Run Code Online (Sandbox Code Playgroud)


Zac*_*ler 23

新版本的Laravel(撰写本文时为5.6)支持Blade中的这两个指令:

@auth
// The user is authenticated...
@endauth

@guest
// The user is not authenticated...
@endguest
Run Code Online (Sandbox Code Playgroud)

请参阅此处的官方文档:https: //laravel.com/docs/5.6/blade


Roh*_*ude 6

你也可以使用 Auth::guest()

Auth::guest()方法返回true或false.

示例 -

@if (Auth::guest())
    <a href="{{ route('login') }}">Login</a>
    <a href="{{ route('register') }}">Register</a>
@else
    {{ Auth::user()->name }}
    <a href="{{ route('logout') }}">Logout</a>
@endif
Run Code Online (Sandbox Code Playgroud)


bah*_*tsh 5

这应该有帮助:

@extends(Auth::check() ? 'partials.navbarlogged' : 'partials.navbar')
Run Code Online (Sandbox Code Playgroud)

Auth::chek() 查看用户是否登录并返回一个布尔值。