我搜索了SO,并在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
对于每个刀片布局,我都需要在可以重复使用多个代码段时重复导航代码。
答案 0 :(得分:11)
你可以这样做
@section('nav')
@include('another')
@include('magical')
@include('snippet')
@end
答案 1 :(得分: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和变量(@include($viewname, array('some' => 'data')
)来完成,但是我会说它更干净,因为它从视图中删除逻辑,特别是如果嵌套视图并不总是相同的刀片文件。
答案 2 :(得分:0)
即使这已经很晚了,你也可以这样做:
例如。在admin.php中你可以拥有:
@extends('home')
@section('nav')
// navigation
@endsection
@section('content')
// admin page content
@endsection
不是说这更好或者不是我只是回答关于使用刀片嵌套视图的问题,这就是我如何嵌套我的观点。