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里面仍是外面均可以直接用的

相关文章
相关标签/搜索