我正在使用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>
完全。不仅堆栈区域,还包括原始区域。怎么了?
答案 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
相同的逻辑顺序适用于堆栈。