2013-12-13 5 views
0

У меня есть мнение для каждой страницы, как это:Laravel4 - @include() включает в себя только одну страницу

<!-- {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

Разделы, содержащие контент, будут предоставлены, если этого потребует. Поскольку родители оказываются перед детьми в большинстве случаев, вы будете получать одни и те же данные снова и снова. Поскольку разделы, по сути, заполняют контейнеры, контейнер содержимого в этом случае заполняется данными на вашем первом @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') 
+0

Цель состоит в том, чтобы иметь возможность отображать каждую страницу как отдельную или просто включать голый контент без окружающих тегов, таких как html, body, title и т. Д. Либо для укладки в один макет страницы, либо с помощью AJAX. У меня были проблемы с использованием любого другого решения для этого, таким образом, макет plain.blade. – Nicolas

+0

Вы пытались удалить «@ yield» и заменить секцией '@section .. @ stop'. Затем, учитывая, что после того, как ваш контент был записан в раздел? –

+0

Я не уверен, насколько я понимаю, что вы имеете в виду. – Nicolas

Смежные вопросы