【问题标题】:Laravel @section @yield blade template not showingLaravel @section @yield 刀片模板未显示
【发布时间】:2019-01-15 17:51:04
【问题描述】:

我正在尝试将我的菜单与app.blade.php 分开。为什么以下不起作用?

views/layouts/app.blade.php:

<body>
@yield('menu')
<div class="container">
    @yield('content')
</div>
</body>

views/layouts/menu.blade.php:

@extends('layouts.app')
@section('menu')
// Menu is here
@endsection

【问题讨论】:

  • 尝试在app.blade.php中使用@include(layouts.menu)
  • 尝试在 app.blade.php 中使用@include('menu')
  • @404BrainNotFound 我尝试了你的方法(我确实在layouts.menu 周围添加了' '。我收到一个错误,告诉我页面无法正常工作。(http500 错误)
  • @KamleshGupta 使用此解决方案后,我得到View [menu] not found.

标签: laravel laravel-blade


【解决方案1】:

您不必yield 菜单部分,而是include 它。正如您可以从official documentation 中看到的那样:

Blade 的@include 指令允许您从另一个视图中包含一个 Blade 视图。所有可用于父视图的变量都将可用于包含的视图:

<div>
  @include('shared.errors')

  <form>
  <!-- Form Contents -->
  </form>
</div>

所以你的layouts/app.blade.php 文件应该是这样的:

<body>
  @include('layouts.menu')

  <div class="container">
    @yield('content')
  </div>
</body>

【讨论】:

  • 谢谢,我刚试过,但现在出现以下错误View [menu] not found.
  • 我的错...这是include('layouts.menu'),这取决于您保存视图的位置。例如views/frontend/form/checkout 将被包含为include('frontend.form.checkout)
【解决方案2】:

你的 app.blade.php 应该是这样的

定位:views/layouts/app.blade.php

<body>
   @include('layouts.menu')
   <div class="container">
     @yield('content')
    </div>
</body>

还有你的 menu.blade.php

定位:views/layouts/menu.blade.php

// Menu's here

【讨论】:

  • 谢谢。我的menu.blade.php 中仍然有部分和扩展,删除了这些,现在它可以工作了!谢谢 :) 接受
猜你喜欢
  • 2017-11-18
  • 2017-07-15
  • 2015-08-05
  • 2017-05-16
  • 2014-07-04
  • 2014-09-04
  • 2018-03-14
  • 2014-11-07
  • 1970-01-01
相关资源
最近更新 更多