2013-06-05 57 views
5

我已經搜索過,並在Laravel文檔中挖出來,但我不確定我是否完全明白我是否願意去做。與laravel的嵌套視圖刀片

我正在使用Laravel 4.我想知道如何在其他視圖中嵌套視圖。

例如,我有一個基地佈局..讓叫它layout.blade.php

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

接下來,我有一個刀片稱爲home頁:

@extends('layout') 

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

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

我有幾個不同的導航佈局,一個用於管理員,另一個用於超級用戶,另一個用於常規用戶。

有沒有辦法在section('nav')內添加另一個刀片視圖?

@section('nav') 
// do something magical here? 
@end 

它沒有意義,對於每一個刀片佈局我需要重複導航代碼時,幾個片段可以重複使用。

回答

10

你可以做到這一點

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

Boom ...這就是我正在尋找..我認爲我的語法在我測試時關閉。 – 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') )但是我會說它更清潔,因爲它會從視圖中刪除邏輯,特別是如果您的嵌套視圖不總是相同的刀片文件。