Laravel4 - @include()只包含一个页面

时间:2013-12-13 15:22:24

标签: include laravel blade

我有一个每个页面的视图,如下所示:

<!-- {pagename}.blade.php --!>

@extends((($nolayout == true) ? 'layouts.plain' : 'layouts.base'))

@section('title')
    <title><!-- some title here --!></title>
@stop

@section('content')

<section class="container clearfix">

    <!-- some content here --!>

</section>

@stop

我的plain.blade.php文件只包含这个:

@yield('content')

还有一个base.blade.php文件,其中还包含一些包装标签,但这与此无关。

当我尝试将视图附加到我的主视图时,如下所示:

@include('about', array('nolayout' => true))
@include('offer', array('nolayout' => true))
@include('contact', array('nolayout' => true))

它多次追加第一个视图(在这种情况下,它将包含3次)。这些视图中的每一个都可以单独包含并且工作正常,但是当我堆叠它们时,我调用的第一个视图会被重复。

1 个答案:

答案 0 :(得分:1)

如果要求,将包含包含内容的部分。在大多数情况下,由于父母在孩子面前呈现,您将一遍又一遍地获得相同的数据。作为部分,实质上是填充容器,此实例中的“内容”容器将填充第一个@include上的数据。当它被延长第二次和第三次时,它立即被要求产生内容,尽管孩子有效地说,用x量的内容覆盖该部分。

我不是100%确定plain.blade布局文件的目的,如果它只是产生一个部分。你最好在你的主布局标题部分中有一个不会产生的基础部分。然后,每个包含应该调用@parent刀片方法将其数据附加到已填充的部分,然后在准备就绪后生成。

评论示例

如果布局中有@yield,请尝试

@section('content')
    {{-- Parent Content --}}
@stop

在您的孩子视图中

@section('content')
    @parent
    {{-- Content to append --}}
@stop

然后在渲染视图中

@include('about', array(...))
@include('another', array(...))

@yield('content')