Laravel Blade模板堆栈不起作用

时间:2018-10-31 14:30:00

标签: laravel laravel-blade

我正在使用Laravel开发Web应用程序。我现在正在做的是使用https://laravel.com/docs/5.7/blade#stacks中提到的Blade堆栈功能来呈现内容。问题是它不起作用。参见下面的简单代码。

这是我的观看内容

@extends('layouts.app')


@stack('stack_content')

   <h1>Other contents</h1>

@prepend('stack_content')
      <h1>This is my name</h1>
@endprepend


@section('content')

@endsection

它不起作用是因为它没有显示该内容

<h1>This is my name</h1>
完全

。不仅堆栈区域,还包括原始区域。怎么了?

1 个答案:

答案 0 :(得分:2)

应在布局中使用堆栈。将堆栈放在同一刀片模板中的原因(如果有的话)并不多。

在文档的示例中,堆栈是在布局的<head>中定义的。扩展布局的模板是您将代码推送或添加到该堆栈的位置。 (尽管文档对此可能会更清楚)

呈现刀片视图的各个部分,然后将其放置在扩展布局中的适当位置,这使得可以定义内容的加载位置。

您不能用yield定义一个部分,然后在该部分中定义内容。布局到达@yield或@stack时,它将呈现该部分中定义的内容。

换句话说,这是可行的,因为节内容在到达yield之前就已经呈现:

            @section('test')
                <h1>Hello World</h1>
            @endsection
            @yield('test')

但这不会:

            @yield('test')
            @section('test')
                <h1>Hello World</h1>
            @endsection

相同的逻辑顺序适用于堆栈。