首页 > 解决方案 > Laravel Blade:@stop VS @show VS @endsection VS @append

问题描述

在 Laravel 中,有不同的使用部分的方法:

@yield('section1') // Filled in by child view

@section('section2')
    // Default content, can be overwritten by child
    // Different ways of closing the section
@endsection|stop|show|append

谁能告诉我所有这些之间的确切区别是什么?

根据this,@stop 和 @endsection 可能是相同的。(其中一个已被弃用,但不再是)

标签: phplaravellaravel-5laravel-blade

解决方案


@endsection@stop是相同的,表示一个部分的结束。

在您这样做之前,该部分实际上并未呈现在页面上@yield('sectionname')

相反,@show相当于

@stop
@yield('sectionname')

即它停止并立即在页面的该部分呈现该部分。

@append基本上相当于:

//FileA.blade.php
@section('sectionname')
 ... content
@stop

//FileB.blade.php
@extends('fileA')

@section('sectionname')
    @parent
    ... more content after content
@stop

这是一些相关的源代码:

protected function compileStop() {
    return '<?php $__env->stopSection(); ?>';
}
protected function compileEndsection() {
    return '<?php $__env->stopSection(); ?>'; //Same code
}

protected function compileShow() {
    return '<?php echo $__env->yieldSection(); ?>';
}

Yield 部分只是停止当前部分并产生其内容。


推荐阅读