Ber*_*t H 9 php laravel laravel-5 laravel-blade
在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
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这些之间究竟有什么区别?
根据这一点,@ stop和@endsection可能是相同的.(其中一个已被弃用,但现已不再使用)
apo*_*fos 14
@endsection并且@stop是相同的并表示一节的结尾.
在您执行之前,该部分实际上不会在页面上呈现 @yield('sectionname')
相比之下,@show相当于
@stop
@yield('sectionname')
Run Code Online (Sandbox Code Playgroud)
即它停止并立即在页面的该部分呈现该部分.
@append 基本上相当于:
//FileA.blade.php
@section('sectionname')
... content
@stop
//FileB.blade.php
@extends('fileA')
@section('sectionname')
@parent
... more content after content
@stop
Run Code Online (Sandbox Code Playgroud)
这是一些相关的源代码:
protected function compileStop() {
return '<?php $__env->stopSection(); ?>';
}
protected function compileEndsection() {
return '<?php $__env->stopSection(); ?>'; //Same code
}
protected function compileShow() {
return '<?php echo $__env->yieldSection(); ?>';
}
Run Code Online (Sandbox Code Playgroud)
Yield部分只是停止当前部分并产生其内容.
Gur*_*ngh 14
我可能会迟到。但在 Laravel 7.x 系列中,没有提到“@stop”和“@append”。
问:@endsection 和 @show 之间的区别
@endsection 指令只是告诉刀片引擎该部分实际结束的位置。要显示该部分,您需要使用 @yield 指令。如果您不屈服,则该剖面刀片在渲染视图后将不会显示它。
例如在布局视图中:
<!-- layout -->
<body>
@section('content')
Some Content
@endsection
</body>
Run Code Online (Sandbox Code Playgroud)
上面的代码没有任何意义,当然我们定义了一个section。但它不会显示在客户端的视图中。所以我们需要生成它,使其在客户端上可见。因此,让我们以相同的布局生成它。
<!--layout-->
<body>
@section('content')
Some content
@endsection
@yield('content')
</body>
Run Code Online (Sandbox Code Playgroud)
现在上面的代码对客户端有一些意义,因为我们已经定义了一个部分并告诉 Blade 引擎以相同的布局生成它。
但 Laravel 提供了一种快捷方式,无需在同一布局中显式生成该部分,而是使用 @section - @show 指令对。因此上面的代码可以写成如下:
<!--layout-->
<body>
@section('content')
Some content
@show
</body>
Run Code Online (Sandbox Code Playgroud)
所以@show只是@endsection和@yield指令的压缩版本。
我希望我把一切都说清楚了。还有一件事,在 laravel 7.x 中,要在该部分中附加内容,使用了 @parent 指令。
| 归档时间: |
|
| 查看次数: |
2803 次 |
| 最近记录: |