请教@section和@yield的区别

请问下,这两种模板使用方式有什么区别。
方式一:
父模板:
@yield('content')
子模板:
@section('content')
Content here
@stop

方式二:
父模板
@section('content')
@show
子模板:
@section('content')
Content here
@parent @stop

试了下,这两种实现的效果是完全一样的。
另外,方式二里面,@parent去掉,也能实现同样的效果。

所以请教下,方式一和二是什么区别。以及@parent是干什么的。

官方4.2的文档感觉非常不全,很多东西都没有。
已邀请:

FiveSay - 成武

赞同来自:

@yield() 可以理解为一个占位符。
@section('head') 表示一个存储区域,这个区域内定义的内容,在子模板中可以通过 @parent 进行调用。

baiyuxiong

赞同来自:

那使用的时候应该怎么选择呢?

baiyuxiong

赞同来自:

是不是方式一里的yield相当于面向对象的abstract方法。在子类里必须实现这个方法。
方法二相当于override,父类定义了方法,子类可以重写?

FiveSay - 成武

赞同来自:

不要把问题复杂化,两种方式都没有强制子模板调用,它们唯一的区别就是:@section('head') 可以在父模板中预定义内容。

要回复问题请先登录注册