【问题标题】:Laravel cannot seem to yield a sectionLaravel 似乎无法产生一个部分
【发布时间】:2015-02-06 15:27:40
【问题描述】:

有点脑子放屁。不明白为什么我的部分没有被收录

所以我试图在页脚中包含scripts 部分,但是当我重新加载页面时我什么也没得到。肯定是在加载,只是yield不工作

这是我的观点

@extends('layouts/form')

@section('scripts')
    <script>
        alert('It works!');
    </script>
@stop

这里是布局/表单

@include('layouts/head')
@include('layouts/header')

// html stuff

@include('layouts/footer')

还有我的页脚

// footer html
@yield('scripts','')
</body>
</html>

我对部分的理解是否正确?如果scripts 部分不存在,那么它只会打印任何内容。需要按一定的顺序吗?

【问题讨论】:

  • 您的确切代码在这里对我有用...您将这些文件称为什么?他们使用"&lt;filename&gt;.blade.php" 模式吗?通常刀片模板引擎使用点语法而不是斜线来标识模板:@extends('layouts.form') 而不是@extends('layouts/form').. 但两者都在这里工作.. 你在 Windows 上吗?
  • 作为路由/控制器操作的响应,您返回什么视图?它应该是return View::make('your_view');,其中your_view 是以@extends('layouts/form') 开头的那个。 (该代码也适用于我)。

标签: php laravel


【解决方案1】:

根据我对blade template engine的理解:

<div class="col-xs-12">
  @yield('content')
</div>

有效,任何扩展包含此@yield(在我的情况下为master.blade.php)的文件的任何内容都将在此处打印其内容:

@section('content')
  <div class="container-fluid">
    @include("order-form")
  </div>
@stop

我唯一能想到的另一件事(在获得@yield('scripts') 以完美地在我的一个项目上工作之后就是结构。为了给你一个想法,这是我的应用程序/视图的结构:

..
-> forms
   -> generic.blade.php
   -> loss.blade.php
   -> rts.blade.php
-> layouts
   -> master.blade.php
index.blade.php
order.blade.php 

layouts.master -&gt; @yield('content') -&gt; index.blade.php -&gt; @section('content') -&gt; @include('forms.loss') -&gt; @stop

这应该使关系非常清晰。也许这有帮助,我不知道。这很棘手,我觉得它应该适用于你的情况。让我知道这是否有帮助。

【讨论】:

  • 不走运,这真的很奇怪。如果我尝试产生另一个部分也不起作用。我在网站的后端做同样的事情,除了它在头部并且工作正常
  • 嗯...确实很奇怪。这些是 file.blade.php 就像 msturdy 问的那样?
【解决方案2】:

实际上是因为我从数据库中加载了一些页面,这些页面告诉 laravel 使用哪种布局,所以脚本部分从未在他们的视图中

【讨论】:

    猜你喜欢
    • 2017-01-07
    • 2019-01-28
    • 2014-04-03
    • 2014-12-05
    • 1970-01-01
    • 2023-02-26
    • 2014-08-24
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多