当前位置:首页 > Laravel > Laravel框架之模板布局与继承

Laravel框架之模板布局与继承

Laravel框架之模板布局与继承

知识点 1.模板继承与区块 2.包含子视图


1.模板继承与区块

  • 定义布局父模板

    • views/base.blade.php

    • 占位符区块: @yield('title','默认值'), 可重写,不可扩展

    • 填充区块: @section('区块名')...@show, 可重写,可扩展

  • 子模板填充区块

    • 文本: @section('title','填充文本')

    • 文本/html: @section('title')...@endsection

    • 继承布局模板: @extends('base')

    • 填充占位符(@yield())

    • 填充区块: @section('title')...@endsection


2.包含视图

  • @include('header'): 通常用于加载被分离的公共视图

  • @include('header',['title'=>'标题',...]): 支持传参


为简化代码,直接使用路由视图,不再创建控制器方法

1. 路由: web.php

//4. 模板中的模板继承与子视图
Route::view('admin/demo4', 'home/demo4');

2.布局模板: hom/base.blade.php

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>模板继承与子视图</title>
    <style>
        .header, .footer {
            width: 100%;
            height:60px;
            background-color: lightblue;
            text-align: center;
            line-height: 60px;
        }
        .main {
            overflow: hidden;
            min-height: 800px;
            width: 90%;
            margin: 5px auto;
        }

        .main .sider {
            float:left;
            width: 30%;
            min-height: inherit;
            background-color: lightgreen;
        }
        .main .content {
            float:right;
            width: 70%;
            min-height: inherit;
            background-color: wheat;
        }
    </style>
</head>
<body>
<div>
    @section('nav')
    <a href="">首页</a>
    <a href="">公司新闻</a>
    <a href="">最新产品</a>
        @show

</div>
<div>
    <div>
        @yield('ads','广告位招商:0551-56558899')
    </div>
    <div>
        @section('content')
            <h2>新网站上线通知</h2>
            <p>新网站上线啦,大家快来看看呀</p>
        @show
    </div>
</div>
<div>
    @section('right')
    &copy;php中文网版权所有
    @show
</div>
</body>
</html>

3.子模板: home/demo4.blade.php

{{--继承自base--}}
@extends('home.base')

{{-- 广告栏会经常发生变化,可以考虑用外部文件引用 --}}
@include('home.inc.ads')


{{--头部导航区填充并扩展--}}
@section('nav')
{{--引用原父模板中的区块内容--}}
@parent
<a href="">关于我们</a>
<a href="">联系我们</a>
@stop

{{--内容区填充并扩展--}}
@section('content')
   @parent
    <h1>新站新福利,收藏有惊喜</h1>
@stop

{{--底填充并扩展--}}
@section('right')
    @parent
    <a href="">ICP备案号: 皖ICP1800001</a>
@stop

4. 外部文件: home/inc/adb.blade.php

{{--侧边栏广告位填充--}}
@section('ads')
<h1>恭喜</h1>
<h3>php中文网VIP功能正式上线</h3>
@stop

免责声明:部分文章信息来源于网络及网友投稿,本网站只负责文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本网站文章和转稿涉及版权等问题,请作者及时联系本站,我们会尽快处理。烛光驿站欢迎捐赠赞赏

权益
版权所有:© 2018 www.sjzphp.cn
网站备案:冀ICP备17012435号-2
联系邮箱:guotaoi@foxmail.com