2013-06-05 58 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') )但是我会说它更清洁,因为它会从视图中删除逻辑,特别是如果您的嵌套视图不总是相同的刀片文件。