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