首页 » SEO优化 » phpendofsection技巧_优雅的laravel blade 模板运用你掌握了吗

phpendofsection技巧_优雅的laravel blade 模板运用你掌握了吗

访客 2024-11-21 0

扫一扫用手机浏览

文章目录 [+]

@section、@yield、@parent、@stop、@overwrite、@append

1. @section 与 @yield

phpendofsection技巧_优雅的laravel blade 模板运用你掌握了吗

@section 指令定义了视图的一部分内容,而 @yield 指令是用来显示指定部分的内容。

phpendofsection技巧_优雅的laravel blade 模板运用你掌握了吗
(图片来自网络侵删)

@section 与 @yield 的差异:

@yield 可以设置默认值,没有 @section 标签时会显示默认值。
有 @section 标签时会覆盖 @yield 的内容,且不支持用 @parent 重载原内容。
@section 标签既可以覆盖 @section 的内容,也可以重载 @section 的内容。
当子模板不须要引用原父模板的内容时利用 @yield 即可。

2. 其他指令

@section: 指令定义视图的一部分内容@show:是 @section 指令下面的结束符。
还有其他结束符@stop、@endsection、@overwrite 以及 @append

①关于 @show 与 其他结束符的利用解释:

一样平常都是在父类模版中利用 @show 作为结束符,在子类模版中利用其他结束符。

②@stop 和 @endsection 结束关键字

这两个代表的都一样, @endsection属于老版本,新版本都用@stop, 以是建议往后都是用@stop, 如果考虑构造对称利用 @endsection 也可以。

@show: 指的是实行到此处时将该 section 中的内容输出到页面@stop 则只是进行内容解析,并且不再处理当前模板中后续对该 section 的处理, 并不输出内容到页面

但是如果前面在该 @section('xxx') ... @append 中调用 @parent, 然后在该当前 @section 模版中利用 @stop 结束符,则会更换 @parent 默认的原内容

实例1:

{{-- master.blade.php --}}@section('content') 默认原内容@show {{-- child.blade.php --}}@section('content') @parent <p>我是模版继续 - 01</p>@endsection 输出: 默认原内容 我是模版继续 - 01

实例2:

{{-- master.blade.php --}}@section('content') 默认原内容@show {{-- child.blade.php --}}@section('content') @parent <p>我是模版继续 - 01</p>@append@section('content') <p>我是模版继续 - 02</p>@append 输出: 默认原内容 我是模版继续 - 01 我是模版继续 - 02

实例3:

{{-- master.blade.php --}}@section('content') 默认原内容@show {{-- child.blade.php --}}@section('content') @parent <p>我是模版继续 - 01</p>@append@section('content') @parent <p>我是模版继续 - 02</p>@stop 输出: 我是模版继续 - 02 我是模版继续 - 01

把稳:@stop 的模版已经更换 @parent 继续的默认原内容

扩展:如果把 master.blade.php 中的@section 换成 @yield("content", '默认原内容') 会是什么结果呢?实在 @yield 和 @parent 和 @stop 的利用办法都没有变.我也展示下吧, 不一样的结果只是在 @yield 定义的内容不支持用 @parent 重载原内容的部分

实例1 - 扩展:

{{-- master.blade.php --}}@yield('content', '默认原内容') {{-- child.blade.php --}}@section('content') @parent <p>我是模版继续 - 01</p>@endsection 输出: 我是模版继续 - 01

实例2:

{{-- master.blade.php --}}@yield('content', '默认原内容') {{-- child.blade.php --}}@section('content') @parent <p>我是模版继续 - 01</p>@append@section('content') <p>我是模版继续 - 02</p>@append 输出: 我是模版继续 - 01 我是模版继续 - 02

实例3:

{{-- master.blade.php --}}@section('content') 默认原内容@show {{-- child.blade.php --}}@section('content') @parent <p>我是模版继续 - 01</p>@append@section('content') @parent <p>我是模版继续 - 02</p>@stop 输出: 我是模版继续 - 02 我是模版继续 - 01

把稳:@stop 的模版已经更换 @parent 继续的默认原内容

@overwrite:覆盖之前的所有定义,以这次的为准 @append:再次添加模板 @yield:用来显示指定部分内容。
如果你要定义的部分没有默认内容让子模板扩展的,那么用 @yield(default) 的形式会比较方便 @parent:保留父模板内容。
但是 @yield 模板继续后继续模板将不会保留父模板内容

3. 其他

注释部分也很大略,便是将 {{– …–}} 更换成 <?php / … / ?php>compileRawEchos -> 输出未经转义的内容 ({!! … !!})compileEscapedEchos -> 输出转义之后的内容 ({{{ … }}})compileRegularEchos -> 正常输出 ({{ … }})

领取办法:点赞关注

领取办法:点赞关注小编后私信【资料】获取资料领取办法!

标签:

相关文章