2013-09-06 4 views
5

내 사이트를 부트 스트랩하기 위해 공통 트위터 부트 스트랩 구성 요소를 블레이드 템플릿에 넣었습니다.Laravel Blade Templates Section 반복/캐시 오류

sidebar.blade.php

@include('panel1') 
@include('panel2') 

panelTemplate.blade.php

<div class="panel panel-primary"> 
    <div class="panel-heading"> 
     <div class="panel-title"> 
      @yield('title') 
     </div> 
    </div> 
    <div class="panel-body"> 
      @yield('body') 
    </div> 
    <div class="panel-footer"> 
      @yield('footer') 
    </div> 
</div> 

이 방법은, 내가 패널을 사용하고자 할 때마다, 그때 @extends('panelTemplate')를 사용할 수 있습니다.

panel1.blade.php

@extends('panelTemplate') 
@section('title') 
title panel 1 
@stop 

@section('body') 
body panel 1 
@stop 

@section('footer') 
footer panel 1 
@stop 

panel2.blade.php

@extends('panelTemplate') 
@section('title') 
title panel 2 
@stop 

@section('body') 
body panel 2 
@stop 

@section('footer') 
footer panel 2 
@stop 
I 직면하고 문제가

대신으로 panel2.blade.php 다음의 내용을 panel1.blade.php의 내용을 보여주는 sidebar.blade.php에 선언 된 내용은 panel1.blade.php의 내용이 반복되고 있습니다 (두 번 표시).

Blade가 요청을 캐시하여 패널 1이 두 번 반복되는 이유는 무엇입니까? 이 동작을 무시할 수있는 방법이 있습니까? 아니면 블레이드 템플리트 엔진을 의도하지 않은 방식으로 사용하고 있습니까?

답변

7

당신은 절 ... 당신이 이미 가지고있는 시도 overwriting하여이를 달성하지만,이 두 가지 업데이트 하위 전망 할 수 있습니다

panel1.blade.php

@extends('panelTemplate') 

@section('title') 
title panel 1 
@overwrite 

@section('body') 
body panel 1 
@overwrite 

@section('footer') 
footer panel 1 
@overwrite 

panel2. blade.php

테스트를 거쳐 여기에서 작동합니다. @overwrite의 의도 된 용도인지 확인하고 철저히 시험하십시오!

+0

니스 !!! 감사!!! – Gravy

+0

우수 답변! 불행히도 귀하의 링크가 망가졌으며 문서에서'@ overwrite'에 관한 정보를 찾을 수 없습니다. 다행히 대답은 여기에 있습니다! – samrap

+0

@samrap - 링크가 수정되었습니다 :) - 버전 4.2에서 Laravel의 v5를 확인해야합니다. – msturdy

관련 문제