美文网首页
Laravel Blade 模板引擎

Laravel Blade 模板引擎

作者: 捔落纏綿 | 来源:发表于2017-05-16 11:26 被阅读0次
    图片.png

    新建模板文件

    图片.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
    

    相关文章

      网友评论

          本文标题:Laravel Blade 模板引擎

          本文链接:https://www.haomeiwen.com/subject/toyhxxtx.html