2013-06-05 101 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 

私はカップルの異なるナビゲーションのレイアウトを持っています1つは管理者用、もう1つはスーパーユーザー用、もう1つは通常ユーザー用です。

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クラスを使用してネストできます。例えば。あなたは、ルート/コントローラに次のように持つことができ:

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

してからhome.blade.phpに、あなたはこれを行うことができます:

@extends('layout') 

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

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

これは、同様に含まれ、変数で行うことができます(@include($viewname, array('some' => 'data') )しかし、私はビューからロジックを削除するので、特にあなたのネストされたビューが常に同じブレードファイルではない場合は、そのクリーナーと言うだろう。

関連する問題