2014-01-16 1 views
6

내가 가지고있는 메인 레이아웃 템플릿 /views/web/main_lo.blade.phpLaravel 블레이드 템플릿 차이

<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title>{{$title or 'Default Title'}}</title> 
    </head> 
    <body> 

     <div class="section-1-outer"> 
      @section('section-1') 
      <div class="section-1-parent">parent section 1</div> 
      @show 
     </div> 
     <div class="section-2-outer"> 
      @section('section-2') 
      <div class="section-2-parent">parent section 2</div> 
      @show 
     </div> 
     <div class="section-3-outer"> 
      @section('section-3') 
      <div class="section-3-parent">parent section 3</div> 
      @show 
     </div> 


     <div> 
      @yield('content') 
     </div> 
    </body> 
</html> 

로 및 섹션 템플릿과 같이

@extends('web.main_lo') 


    @section('section-1') 
    @parent 
    <div class='section-1-child'> 
    <p>Appended to parent</p> 
    </div> 
    @stop 

    @section('section-2') 
    <div class='section-2-child'> 
    <p>Replace parent</p> 
    </div> 
    @stop 

    @section('section-3') 
    <div class='section-3-child'> 
    <p>Replace parent</p> 
    </div> 
    @overwrite 

지금 여기 섹션 레이아웃을 확장하고 main_lo, 여기에 첫 번째 섹션-1은 아주이다 해당 하위 섹션에는 상위 섹션 -1이 포함되고 상위 섹션에는 내용이 인쇄됩니다.

이제 섹션 2와 섹션 3 구현의 차이점은 부모 섹션의 콘텐츠를 대체하고 하위 콘텐츠 만 인쇄되기 때문입니다. 나는 분명히

가한다고 할 때 documentation이 추가 @overwrite 태그의 필요가 무엇을 의미 "블레이드 레이아웃을 확장 뷰는 단순히 레이아웃에서 섹션 을 무시합니다."

및 그 상위 섹션의 내용을 교체하기위한도 @overwrite를 사용 덮어 섹션있다.

+1

좋은 질문입니다. 여기에 몇 가지 안내 : http://laravel-recipes.com/recipes/244 –

답변

4

Laravel보기의 섹션이 약간 이상하고 나쁜 부분은 처음부터 분명하지 않다는 것입니다.

섹션은 실제로 반대 순서로 확장됩니다. 먼저 섹션이 자식이되고 나중에 섹션이 부모가됩니다. 따라서 @parent은 실제로 뒤 따르는 섹션의 내용을 포함합니다.
이것은 부모님과 자녀가이 시스템에 가장 적합한 용어가 아닌 이유입니다.

일반적인 사용 사례 레이아웃 때문에 분명하지 않습니다. 레이아웃 섹션이 처음 정의 된 것처럼 보입니다. 그러나 실제로 콘텐츠 섹션이 렌더링 된 후에 실행되었습니다.

즉, @overwrite은 실제로 어린이가 아닌 부모 섹션에서 사용됩니다. 당신이 레이아웃에서 (@show)을 굴리는 것처럼 당신의 예제에서 너무 의미가 없을 것입니다, 당신이 거기에 덮어 쓰고 싶지 않음을 의미합니다.

이유는 실제로 덜 일반적인 사용 사례에 대해 @overwrite이 작성되었으므로 레이아웃 콘텐츠, 부모 - 자식 관계가있을 때가 아닙니다.
대부분의 경우이 문제는 동일한 부분 이름을 사용하고 이전에 정의 된 섹션이 나중 대신 표시되는 경우 문제가 발생하는 일부 파일 (어쩌면 모든 곳)을 포함 할 때 발생합니다.