2013-09-26 33 views

回答

11

有一個更簡單的方法來做到這一點,使用節和模板的繼承。

  1. 首先,創建一個主佈局文件,像這樣: http://paste.laravel.com/UY9這是一個我使用包括 Initializr /引導。我把這個存儲在views/layouts/frontend /中,作爲
    master.blade.php用於前端和views/layouts/admin /作爲 master.blade.php用於管理員並根據需要進行修改。
  2. 您會注意到以@show結尾的各種@section聲明。在末尾使用 @show代替@stop,允許您在其他視圖中覆蓋它們 ,您會注意到我已經添加了@section('scripts') 聲明。所以,你可以創建一個視圖,如下所示:
 
    
@extends('layouts.frontend.master') 

@section('scripts') 
    Your Scripts 
@stop 

@section('content') 
    Your content 
@stop 
 

就這麼簡單。這是非常強大的功能,因爲它可以讓您設置默認值,但如果需要也可以覆蓋它,從而保持您的視圖非常乾淨和最小化。

一個更好的辦法來做到這一點,雖然是做:

 
    
@extends('layouts.frontend.master') 

@section('head') 
    @parent 
    Your Scripts 
@stop 

@section('content') 
    Your content 
@stop 
 

然後你可以從你的總體佈局中刪除@section(「腳本」)聲明。使用@parent幫助程序將允許您將內容附加到某個部分,從而在添加您在視圖中指定的額外內容時保持默認狀態。

您還可以爲@yield聲明提供默認內容,如@yield('content','Default content')。

退房http://codebright.daylerees.com/blade

+0

救了我的天! :) –

2

首先製作一個通用的頁眉佈局。

app/views/layouts/header.blade.php - header layout

<!DOCTYPE html> 
<html> 
<head> 
    <title>{{ $page->title }}</title> {{-- Getting title from $page object, which is passed from route --}} 
    {{ HTML::style('css/common.css') }} 
    {{ HTML::script('js/jquery.js') }} 
    {{ HTML::script('js/common.js') }} 

然後網頁腳本具體佈局。

app/views/layouts/script-about.blade.php - about-page script layout

{{ HTML::script('js/about.js') }} 

然後查看特定頁面。

app/views/about.blade.php - about page

@extends('layouts.master') 
@section('content') 
    <p>About-Us page content goes here</p> 
@stop 

然後共同頁腳。

app/views/layouts/footer.blade.php - footer layout

</body> 
</html> 

然後主要佈局進行渲染。

app/views/layouts/master.blade.php - main layout

@include('layouts.header') 
@include('layouts.script-'.$page->slug) {{-- Getting page name from $page object --}} 
</head> 
<body> 
    @yield('content') 
@include('layouts.footer') 

往返航線,可以通過$page變量。你可能會喜歡這條路線,

Route::get('{slug}', function($slug) { 

    $page = Page::where('slug', '=', $slug)->first(); 
     // getting the datas from Page model with pages table where slug = last uri in your address-bar 

    if (is_null($page)) { // if no page in db, call 404 
     App::abort(404); 
    } 
     // render the view with page details 
    return View::make($page->slug)->with(array('page' => $page)); 
}); 
0

在laravel 5.4作爲document

您可以簡單地使用堆疊(@stack和@push),以便能夠從子視圖(子視圖)加載CSS和JS說。

  1. @stack添加到您希望將JS文件或CSS文件從子視圖添加到佈局的佈局中。

這裏我將在佈局文件中定義兩個堆棧,一個用於CSS文件,一個用於JS文件。我給第一和例如stylesscripts

我們希望在佈局文件

<head> 
@stack('styles') 
</head> 

的一部分,被載入我們的CSS文件,讓我們說,我們要加入我們的腳本第二堆任意名稱右是用於結束標記 在佈局文件

@stack('scripts') 
</body> 
  • 現在在子視圖我可以很容易地添加CSS和JS文件這樣
  • @push('styles') 
    <style rel="stylesheet" href="{{asset('dropzone/dist/min/dropzone.min.css') }}" ></style> 
    @endpush 
    
    @push('scripts') 
    <script src="{{ asset('dropzone/dist/min/dropzone.min.js') }}"></script> 
    @endpush