2013-06-05 4 views
5

저는 SO를 검색하고 Laravel 문서를 파헤 쳤습니다. 그러나 내가하고 싶은 것을 수행 할 수 있는지 잘 모르겠습니다.laravel Blade로 중첩보기

저는 Laravel 4를 사용하고 있습니다. 다른보기에서보기를 중첩시킬 수있는 방법을 알고 싶습니다.

예를 들어, 내가 기본 레이아웃을 가지고 ... 내가 home라는 페이지에 대한 블레이드가 그것을 layout.blade.php

<html> 
    <head> 
     <title>{{ $title }}</title> 
    </head> 
    <body> 
     @yield('nav') 
     @yield('content') 
    </body> 
</html> 

다음을 호출 할 수 있습니다 :

@extends('layout') 

@section('nav') 
<p>NAVIGATION</P> 
@end 

@section('content') 
<p>HELLO WORLD!</P> 
@end 

나는 몇 가지 탐색 레이아웃을 하나는 관리자 용이고 다른 하나는 수퍼 유저 용이고 다른 하나는 일반 사용자 용입니다.

section('nav') 안에 다른 블레이드보기를 추가 할 수 있습니까?

모든 블레이드 레이아웃에 대해 여러 스 니펫을 다시 사용할 수있을 때 탐색 코드를 반복해야한다는 것은 의미가 없습니다.

답변

10

이 늦게 당신은이 작업을 수행 할 수있다하더라도이

@section('nav') 
    @include('another') 
    @include('magical') 
    @include('snippet') 
@end 
+0

붐 ... 그게 내가 찾고있는 것. 내가 테스트했을 때 내 구문이 꺼져 있다고 생각합니다. – Michael

0

을 수행 할 수 있습니다

예. admin.php에서 당신이 할 수 있습니다 :

@extends('home') 

@section('nav') 
    // navigation 
@endsection 

@section('content') 
    // admin page content 
@endsection 

이 더 낫다 말을하지 나 난 그냥 블레이드와 중첩 뷰 귀하의 질문에 대답 아니에요, 이것은 내가 어떻게 둥지 내 전망이다.

6

다른 해결책으로 동적으로 다른 하위 뷰를로드하려는 경우 View 클래스를 사용하여 중첩 할 수 있습니다. 예 : (@include($viewname, array('some' => 'data')

이가 함께 할 수있는
@extends('layout') 

@section('nav') 
<p>NAVIGATION</p> 
{{ $subnav }} 
@end 

@section('content') 
<p>HELLO WORLD!</p> 
@end 

포함뿐만 아니라 변수를 : 당신이 할 수있는, 당신의 home.blade.php에서 다음

return View::make('home')->nest('subnav','home/nav', array('some' => 'data'); 

과 : 당신은 라우트/컨트롤러에서 다음을 가질 수있다) 그러나 중첩 된 뷰가 항상 동일한 블레이드 파일이 아닌 경우 뷰에서 논리를 제거 할 때 클리너라고 말하고 싶습니다.