在 Web 开发中会遇到许多页面布局很相似,甚至许多页面的头部和底部显示都是一样的,比如我的这个博客应用,前端所有展示页面的头部和底部就是一样的。
如果每个页面都要重复写这些代码,会导致代码不够灵活、简洁,当然谁也不愿意做重复工作。为了使后面的开发更容易,更好的维护代码,需要设置一个模版,这个模版包含一些通用的视图,页面只要继承这个模版,就拥有模版里面的内容。
Laravel 的 Blade 模板支持继承,这意味多个子视图可以共用父视图提供的视图模板,接下来就是使用 Blade 设置模版。
布局 在 resources/views
目录下创建一个 layouts
目录,在layouts
目录下添加三个文件:
- 模版文件(子视图需要继承的父视图)-
app.blade.php
。 - 通用头部 -
header.blade.php
。 - 通用底部 -
footer.blade.php
。
resources/vews/layouts/app.balde.php
。
getLocale() }}">
@yield('title','SevDot')|SevDot-关注独立开发和自由职业 - 锐客网
@include('layouts.header')
@yield('content')
@include('layouts.footer')
在模版中引入了头部和底部,继承这个模版的页面就会包含这两部分,使用
@include
引入视图,@include
接受两个参数,第一个参数是视图的路径,第二参数是数据,这里不需要给视图传输数据,所以省略了第二个参数。@include('layouts.header')
@yield
是占位区域,这里的内容将由继承自模版的视图文件定义,模版文件中定义了两个占位,分别是标题的部分内容和页面的主要内容区域:@yield('title','SevDot')|
@yield('content')
@yield
接受两个参数,第一个是区域名称,第二个是默认内容,继承模版的视图没有填充的话,由该参数填充。2. 通用头部
resources/vews/layouts/header.balde.php
。
3. 通用底部
resources/vews/layouts/footer.balde.php
。
使用模版 现在需要修改首页、联系页和关于页面,让其继承模版视图。使用
@extends
并通过传参来继承父视图layouts/app.balde.php
的视图模板。@extends('layouts.app')
使用
@section
和 @stop
代码来填充父视图的@stop
区块,所有包含在@section
和@stop
中的代码都将被插入到父视图的content
区块。@section('content')
主页
@stop
1. 首页
resources/views/pages/root.balde.php
。@extends('layouts.app')@section('content')
class="hero is-link">
独立自由
崇尚独立开发,追求自由职业。
联系
class="section">
最新文章@if($articles->isEmpty())@else
@foreach($articles as $key=>$value)
@stop
2. 联系页
resources/views/pages/contact.balde.php
。
@extends('layouts.app')
@section('title')
联系
@stop
@section('content')
class="section">
公众号
@stop
3. 关于页
resources/views/pages/about.balde.php
。
@extends('layouts.app')
@section('title')
联系
@stop
@section('content')
class="section">
您好,我是 SevDot。
我是一名软件开发者和终身学习者,偶尔也写博客文章。
关于博客
基于 Laravel 和 Bulma 开发的个人博客应用。
公众号
@stop
图片资源 在上面的页面中添加了图片,需要在 public
目录下创建一个 images
目录用于存放项目中的图片。
页面效果 【Laravel|Laravel 博客开发|使用 Blade 设置布局模版】首页
文章图片
联系
文章图片
关于
文章图片
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- javascript|Fabric.js 上划线、中划线(删除线)、下划线
- Linux|从安装vagrant 到PHP+nginx+Mysql+Orcal安装
- 手写webpack核心原理,再也不怕面试官问我webpack原理
- js插件|webpack的构建原理小结
- webpack|webpack5原理
- nuxtjs|闲云旅游项目开发-(第一篇(使用Element-ui实现主页轮播图))
- 商城项目学习|牛客网的项目梳理
- 小程序|(已更新)超火的微信养宠小程序源码+十二生肖素材
- 工作第一年|快速上手微信小程序(纯原生)基于微信开发者工具+云开发