2013-06-05 28 views
5

Tôi đã tìm kiếm SO, và đào trong tài liệu Laravel nhưng tôi không chắc tôi có hiểu rõ không nếu tôi muốn làm gì.Quan điểm lồng nhau với Laravel Blade

Tôi đang sử dụng Laravel 4. Tôi muốn biết cách tôi có thể lồng các lượt xem trong các chế độ xem khác.

Ví dụ, tôi có một bố cục cơ sở .. cho phép gọi nó là layout.blade.php

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

Tiếp theo, tôi có một lưỡi cho một trang gọi là home:

@extends('layout') 

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

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

tôi có một vài khác nhau bố trí chuyển hướng , một cho quản trị viên, một cho người dùng siêu và một cho người dùng thông thường.

Có cách nào để thêm một chế độ xem lưỡi khác trong section('nav') không?

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

Điều này không có ý nghĩa đối với mọi bố cục lưỡi, tôi cần phải lặp lại mã điều hướng khi có thể sử dụng lại một số đoạn mã.

Trả lời

10

Bạn có thể làm điều này

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

Bùng nổ ... Đó là những gì tôi đang tìm kiếm .. Tôi nghĩ cú pháp của tôi đã tắt khi tôi thử nghiệm. – Michael

0

Mặc dù đây là muộn bạn cũng có thể làm điều này:

ví dụ. trong một admin.php bạn có thể có điều này:

@extends('home') 

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

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

Không nói điều này là tốt hơn hay không Tôi chỉ trả lời câu hỏi của bạn về quan điểm làm tổ với lưỡi, đây là cách tôi làm tổ quan điểm của tôi.

6

Một giải pháp khác, trong trường hợp bạn muốn tự động tải các bản xem trước khác nhau, bạn có thể lồng bằng cách sử dụng Lớp View. Ví dụ. bạn có thể có những điều sau đây trong một Route/Bộ điều khiển:

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

và sau đó trong home.blade.php của bạn, bạn có thể làm điều này:

@extends('layout') 

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

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

Điều này có thể được thực hiện với một bao gồm và một biến cũng như (@include($viewname, array('some' => 'data')) Tuy nhiên tôi muốn nói nó sạch hơn vì nó loại bỏ logic từ khung nhìn, đặc biệt nếu các khung nhìn lồng nhau của bạn không phải lúc nào cũng là cùng một tệp lưỡi dao.