【问题标题】:Extending layout inside conditional @if causing duplication of layout在条件@if 内扩展布局导致布局重复
【发布时间】:2019-08-06 11:20:35
【问题描述】:

我正在开发 laravel 5.5。我正在检查用户是否像这样登录:

@if(Auth::check())
//some logic

@else
//somelogic

@endif

但是 if/else 语句会被执行两次,具体取决于用户是否登录。你认为为什么会这样? 如here 所述,我尝试了其他方法来检查身份验证。我仍然遇到同样的错误。

我正在使用的布局。

<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial- 
    scale=1">

    <title>{{ config('app.name', '') }}</title>  

   <!-- Styles -->
   <link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app">

    @include('inc.navbar')
      <div class="container">
     @yield('content')
  </div>
  </div>

   <!-- Scripts -->
  <script src="{{ asset('js/app.js') }}"></script>
</body>
</html>

实现的逻辑

@if(Auth::user())
@extends('layouts.app')

@section('content')
  <h1> Exercises</h1>
@endsection
 @else
  @extends('layouts.app')

  @section('content')
  <h1> Nope</h1>
 @endsection
@endif

【问题讨论】:

  • 您能分享一下具体的问题吗?这段代码本身似乎很好。 //some login 是什么,您得到的输出是什么以及预期的结果是什么。
  • 预期输出:来宾用户和登录用户的不同导航栏。电流输出;如果用户已登录,则已登录用户导航栏出现两次。否则,当用户退出时,guest-user-navbar 会出现两次。
  • 你所描述的行为表明你有一个独立于你的身份验证检查的问题,因为你描述的是相同的内容出现了两次。你需要分享你正在使用的布局代码,你可能有一个错误。
  • 所以认证部分工作得很好。您在哪个页面中包含此刀片模板文件以及如何包含此文件?检查重复。
  • 我将用代码编辑问题。

标签: php laravel if-statement authentication laravel-5


【解决方案1】:

你可以试试这个

@if(Auth::user())

// User is logged

@else

//User is not logged

@endif

希望对你有用

【讨论】:

    【解决方案2】:

    像这样更改您的页面。 @extends 不应被调用两次。

    @extends('layouts.app')
      @section('content')
        @if(Auth::user())
          <h1> Exercises</h1>
        @else
          <h1> Nope</h1>
        @endif
      @endsection
    

    如果你想要不同的扩展布局,你也可以使用三元运算符:

    @extends(Auth::check() ? 'layouts.app' : 'layouts.app2')
    

    【讨论】:

    • 使用三元运算符检查和更改布局。您不应该而且在大多数情况下不能重复使用 @extends 两次。用所需的代码更新了答案。
    【解决方案3】:

    在 Laravel 5.5 中你可以使用类似的东西

    @auth
       // logged in
    @else
      // not logged in
    @endif
    

    另外,您可以检查访客用户

    @guest
      // guest user 
    @endguest
    

    更多信息请阅读Authentication Directives

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-24
      • 2014-12-07
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      相关资源
      最近更新 更多