图片.png新建模板文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>@yield('title','Title')</title>
<style>
.header{
width: 1000px;
height: 150px;
margin:0 auto;
background: #f5f5f5;
border: 1px solid #dddddd;
}
.main{
width: 1000px;
height: 300px;
margin: 0 auto;
margin-top: 15px;
clear: both;
}
.main .sidebar{
width: 150px;
height: 300px;
float:left;
margin-right: 15px;
background: #f5f5f5;
border: 1px solid #dddddd;
}
.main .content{
width: 830px;
height: 300px;
float:left;
background: #f5f5f5;
border: 1px solid #dddddd;
}
.footer{
width: 1000px;
height: 150px;
margin:0 auto;
background: #f5f5f5;
border: 1px solid #dddddd;
margin-top: 15px;
}
</style>
</head>
<body>
<div class="header">
@section('header')
头部
@show
</div>
<div class="main">
<div class="sidebar">
@section('sidebar')
侧边栏
@show
</div>
<div class="content">
@yield('content','主要内容区域')
</div>
</div>
<div class="footer">
@section('footer')
底部
@show
</div>
</body>
</html>
1.@yield 和 @section 都可以预定义可替代的区块,这两者有什么区别呢?
2.@section 可以用 @show, @stop, @overwrite 以及 @append 来结束,这三者又有什么区别呢?
@yield 与 @section 区别
首先,@yield 是不可扩展的,如果你要定义的部分没有默认内容让子模板扩展的,那么用 @yield($name, $default) 的形式会比较方便,如果你在子模板中并没有指定这个区块的内容,它就会显示默认内容,如果定义了,就会显示你定义的内容。非此即彼。
与之相比, @section 则既可以被替代,又可以被扩展,这是最大的区别
@show 与 @stop
接下来再说说与 @section 对应的结束关键字,@show, @stop 有什么区别呢?(网上的部分文章,以及一些编辑器插件还会提示 @endsection, 这个在 4.0 版本中已经被移除,虽然向下兼容,但是不建议使用)。
@show 指的是执行到此处时将该 section 中的内容输出到页面,而 @stop 则只是进行内容解析,并且不再处理当前模板中后续对该section的处理,除非用 @override覆盖(详见下一部分)。通常来说,在首次定义某个 section 的时候,应该用 @show,而在替换它或者扩展它的时候,不应该用 @show,应该用 @stop。
图片.png建视图
@extends('layout') {{--继承视图--}}
@section('header') {{--重写视图--}}
@parent {{--继承父模板--}}
header
@stop
@section('header') {{--重写视图--}}
header {{--完全重写--}}
@stop
@section('content')
content
@stop
网友评论