Blade 布局中的条件内容 Laravel

Conditional Content in Blade Layouts Laravel

我有一个 master.blade.php 文件,我在其中添加了

@include('layouts.navbar')

navbar.blade.php 有一些用于创建顶部栏的代码。

如何根据用户是否登录在顶部栏中显示内容。我目前的做法是

<? 
  $user = Auth::user();
  if ($user)
    echo "<ul class="dropdown-menu">
            <li><a href="/myprofile">Profile</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="/auth/logout">Logout</a></li>
            <li role="separator" class="divider"></li>
            <li class="dropdown-header">Nav header</li>
            <li><a href="#">Separated link</a></li>
            <li><a href="#">One more separated link</a></li>
          </ul>";
  else
    echo <a href ="signin">SignIn</a>;
?>

是否有 better/cleaner 编码方式?

如果您想return根据身份验证不同的内容,您将无法避免检查用户的身份验证状态。

但是,当您使用 Blade 模板时,您应该使用 Blade 条件标签而不是纯粹的 PHP。如果您只对用户的状态感兴趣,也无需调用 Auth::user() - Auth::check() 将足够。

您的代码应如下所示:

@if(Auth::check()) 
  <ul class="dropdown-menu">
    <li><a href="/myprofile">Profile</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="/auth/logout">Logout</a></li>
    <li role="separator" class="divider"></li>
    <li class="dropdown-header">Nav header</li>
    <li><a href="#">Separated link</a></li>
    <li><a href="#">One more separated link</a></li>
  </ul>
@else
  <a href ="signin">SignIn</a>
@endif