Laravel Blade - 内部屈服

Joh*_*Pie 11 laravel

我试图在另一部分内部产生一个部分.但这不能按预期工作,我看到空白输出.

@section('3show')
        This is a text string
@stop

@section('page-content')

<div id="content">
    <article>

        @yield('3show')

    </article>
</div>
<!--#content-->


@stop
Run Code Online (Sandbox Code Playgroud)

任何想要在另一部分中产生部分的想法?

Jul*_*uez 6

好的,这就是我尝试过的,我可以确认这有效,至少对于 Laravel 5+(我有 L5.2)。这就是我建议您使用刀片模板的方式。

让我们开始说,要将一个部分生成到另一个部分中,您必须在容器部分定义之前定义包含的部分。所以,明确地说,我解决了这样的情况:

我有一个主刀片 (main.blade.php) 模板,它具有以下内容:

<section class="content">
 <!-- Your Page Content Here -->
 @yield('main-content')
</section><!-- /.content -->
Run Code Online (Sandbox Code Playgroud)

我得到了第二个刀片 (common.blade.php) 模板,其中包含您可能希望在许多页面中显示的常见内容以及定义主要内容部分的位置。这个看起来像:

@section('main-content')
  <div class="container">
    @yield('extra-content')
  </div>
@endsection
Run Code Online (Sandbox Code Playgroud)

最后,我得到了第三个模板 (test.blade.php),它扩展了主模板并包含了我想要展示的常见内容,但要小心,因为顺序很重要。这个看起来像:

@extends('main')
@section('extra-content')
  <div>
    <span> This is a test! </span>
  </div>
@endsection
@include('common')
Run Code Online (Sandbox Code Playgroud)

在您的控制器或您的路线中(无论您在哪里返回视图),您都应该返回第三个模板。


小智 5

在我的项目中,我创建了一些部分以获得更清晰的代码,并给它们作为示例名称:3show.blade.php。为了在一个部分中使用它们,我只是将它们包括在内。我想这会做你想做的。

@section('content')
    @include('3show.blade.php')
@endsection
Run Code Online (Sandbox Code Playgroud)