web-dev-qa-db-ja.com

Laravelブレード:@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へのコード化は同じになる可能性があります。 (1つは廃止されましたが、もう廃止されていません)

12
Bert H

_@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セクションは、現在のセクションを停止し、そのコンテンツを生成します。

14
apokryfos