【问题标题】:yield doesn't work in section Laravel Bladeyield 在 Laravel Blade 部分不起作用
【发布时间】:2017-12-12 19:36:04
【问题描述】:

我的网站结构如下:

第一:master.blade.php:这包含section('content')

<body>
   @include('partial.header')
   @yield('content')
   @include('partial.footer')
</body>

第二个index.blade.php:包含section('content')

@extends('layouts.master')
@section('content')
<div id="container">
   <div id="news">
      @yield('news')
   </div>
   <div id="apartment">
      @yield('apartment')
   </div>
</div> <!-- ./container -->
@endsection

第三个:news.blade.php:这个简单的显示所有news

@foreach($posts as $post)
@endforeach

最终文件:apartment.blade.php:这个简单的显示所有apartment

@foreach($apartments as $apartment)
@endforeach

我的路线直达master.blade.php。 我的问题是:

  1. 当我在index.blade.php 中包含news@yield('news') 时。它在我的数据库中显示正确的所有news。 但是当我在index.blade.php 中删除@yield('news') 时。它还从我的数据库中显示news(但它丢失了css/js)。 为什么我删除了@yield('news'),它应该不会在我的页面上显示任何news

  2. 似乎 Laravel Blade 不支持 @section 中的两个 @yield。当我只将 1 行 @yield('news') 添加到 index.blade.php 文件中时。它在我的索引页面上显示列表新闻。当我继续添加@yield('apartment')。索引页面上没有显示任何公寓。我当然在foreach 获取数据时具有价值。我也用 HTML 静态测试,但没有任何变化。

【问题讨论】:

  • 如果你想添加其他模板使用 include 包含部分模板,它不会产生
  • 你的想法是不是像:@include('news')
  • 是的。这就是你包括在内的方式。或者如果不起作用,您可以搜索在 laravel 中包含模板
  • @Exprator 结果一样。

标签: php laravel blade


【解决方案1】:

我的路线直接到 master.blade.php。

Index 扩展了 master,因此将您的路线指向索引视图。

如果部分继续产生,在@yield 删除后,我认为框架正在加载缓存视图。

尝试清除视图缓存php artisan view:clear 或使用php artisan --help view:clear 寻求帮助。

@yield 也会在父子关系中生成一个部分。

如果新闻位于部分文件夹或任何路径中,则将产量更改为包含@include('partial.news')。可以使用@isset@empty 语句甚至@forelse 循环来操作渲染。

Blade Control Structures.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 2019-11-25
    • 2021-03-29
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2015-07-06
    • 2017-06-18
    相关资源
    最近更新 更多