【问题标题】:Laravel Blade template Stack is not workingLaravel Blade 模板堆栈不起作用
【发布时间】:2018-12-12 04:15:43
【问题描述】:

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

这是我的视图内容

@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>

完全没有。不仅是堆栈区域,而且在原始区域也是如此。怎么了?

【问题讨论】:

  • 你用的是哪个版本的 laravel?我认为在 5.6 中实现了 'prepend',否则使用 'push'
  • 最新版本。 5.7
  • 我也使用了推送。根本不工作
  • 堆栈和前置/推送是否在同一个模板中?我认为这行不通。 "推送到可以在另一个视图或布局中的其他位置呈现的命名堆栈"
  • 正如@Devon 所说,当“堆栈”位于不同的文件中时,我看不到问题。

标签: laravel laravel-blade


【解决方案1】:

应在布局中使用堆栈。没有太多理由(如果有的话)将堆栈放在同一个刀片模板中。

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

blade 视图的部分被渲染,然后放置到扩展布局中的适当位置,这使得定义加载内容的位置成为可能。

您不能使用 yield 定义一个部分,然后在该部分中定义内容。只要布局点击@yield 或@stack,它就会渲染该部分中定义的内容。

换句话说,这是有效的,因为部分内容在它达到产量之前被渲染:

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

但这不会:

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

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

【讨论】:

  • 知道了。很好解释。干杯。伴侣。
猜你喜欢
  • 1970-01-01
  • 2017-05-13
  • 2016-12-18
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 2017-09-10
相关资源
最近更新 更多