Laravel Blade模板的經常使用結構以及嵌套方法

Laravel自帶的Blade模板很強大也很方便javascript

咱們使用模板通常除了傳遞變量之外還有一個重要的用途就是嵌套php

經過嵌套咱們能夠把公共的部分單獨拉出來,在須要的地方引入避免重複勞動css

根據官方文檔咱們能夠知道模板經常使用命令有下面這幾個html

@section 定義java

@yield 展現jquery

@extends 繼承框架

@include 引入less

另外@iF @else @while @unlesss等控制相關這裏就不贅述了佈局

比較經常使用的模板結構

這裏舉個實際的例子post

好比咱們 有三個頁面,首頁,列表頁和詳情頁,分別是index,list,detail

在這三個頁面中須要共同使用的部分有 頁面的外圍template,導航欄部分head

其中template用來放整個頁面的框架佈局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>測試</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <meta content="" name="description" />
    <meta content="" name="author" />
    <meta name="csrf-token" content="{{ csrf_token() }}" />
    <link rel='stylesheet' id='_common-css'  href='/css/common.css?ver=11.1' type='text/css' media='all' />
    <script type='text/javascript' src='/js/jquery.min.js'></script>
</head>

<body>
<section class="container">
    @yield('head')
    @yield('content')
</section>
</body>
</html>

咱們在定義了主體容器container的同時,用@yield命令告訴模板咱們要在這裏放哪些section

這裏咱們雖然定義了templade做爲總體佈局,可是咱們在控制器裏並不能把view指向template而是要指向到具體的頁面
好比首頁

return view('index');

index模板頁面以下

@extends('layouts.template')
@extends('layouts.head')
@section('content')
這裏是頁面的實際內容
@stop

index頁面作了什麼呢?
首先它把全部須要用的模板引入了進來,包括template和head
而後它有定義了一個叫content的section。

head模板頁面以下

@section('head')
    <header class="header">
        <div class="container">
            <ul>
                <li>菜單1</li>
                <li>菜單2</li>
                <li>菜單3</li>
            <ul>
        </div>
    </header>
@stop

至此,一套基本可用的模板就搭建好了。
目錄結構是這樣的

resources/
    views/
        index.blade.php
        list.blade.php
        detail.blade.php
        layouts/
            template.blade.php
            head.blade.php

流程是這樣的

  • Controller指向模板index.blade.php

  • index模板引入template模板和head模板,並定義content section

  • template模板展現自身內容並展現對應的section內容

  • 其中index負責引入全部模板,template負責總體結構和展現,index和head模板負責定義section裏面的內容

特殊嵌套

還有一種比較特殊的需求是須要在默寫特定的section 裏面引入一小塊公共模板
好比有些頁面的右側能夠放個熱門列表

這時候咱們能夠在layouts裏面價格模板right.blade.php
內容以下

<div class="widget widget_ui_viewposts">
    <h3 class="title"><strong>熱門閱讀</strong></h3>  
    <ul>
        <li>文章1</li>
        <li>文章2</li>
        <li>文章3</li>
    </ul>
</div>

必定要注意不要定義section

而後在須要引用的地方用@include

這個方法不管是section裏面仍是外面均可以直接用的

相關文章
相關標籤/搜索