使用通用视图

创建通用视图

前面创建的几个视图里面包含着一些重复的代码,违反了 DRY(Don't repeat yourself)原则,导致代码变得不够灵活、简洁。

因此我们要对页面进行重构,把多余的代码从视图中抽离出来,单独创建一个默认视图来进行存放通用代码

我们给应用创建了一个 default 视图,并将其放在 layouts 文件夹中,default 视图将作为整个应用的基础视图。将 default 文件放在 layouts 文件下,是为了让应用的目录结构让人更好理解。

resources/views/layouts/default.blade.php



  
    @yield('title', 'Sample')
  
  
    @yield('content')
  

@yield('content') 表示该占位区域将用于显示 content 区块的内容,而 content 区块的内容将由继承自 default 视图的子视图定义。

@yield('title', 'Sample') 传了两个参数,第一个参数是该区块的变量名称,第二个参数是默认值,表示当指定变量的值为空值时,使用 Sample 来作为默认值。

让子视图继承通用视图

修改之前创建的视图文件:

resources/views/static_pages/home.blade.php

@extends('layouts.default')

@section('title', '')

@section('content')
  

主页

@stop

resources/views/static_pages/help.blade.php

@extends('layouts.default')

@section('title', '帮助')

@section('content')
  

帮助页

@stop

resources/views/static_pages/about.blade.php

@extends('layouts.default')

@section('title', '关于')

@section('content')
  

关于页

@stop

我们使用了 @extends 并通过传参来继承父视图 layouts/default.blade.php 的视图模板。

使用 @section 和 @stop 代码来填充父视图的 content 区块,所有包含在 @section 和 @stop 中的代码都将被插入到父视图的 content 区块。

@section 传递了第二个参数时,便不需要再通过 @stop 标识来告诉 Laravel 填充区块会在具体哪个位置结束。

修改完成之后,再次在网页上访问这几个静态页面,你会发现父视图的代码已被成功嵌入到子视图中。

你可能感兴趣的:(使用通用视图)