在布局里面,可以使用 @yield 把指定的区块载入进来。其实我们也可以直接在布局文件里去定义区块,然后在使用这个布局的视图文件里面,可以覆盖掉这个区块里的内容,也可以先把布局区块里的内容显示出来,再去显示自己的内容。
下面通过几个简单的演示,来理解一下。
先打开 master.blade.php 这个布局文件 ... 在这里,我们可以去定义一个区块。@section .. 在括号里指定这个区块的名称 .. 比如叫它 sidebar ..
结束这个区块,之前我们用的是 @stop ... ,不过在这里,我们可以使用 @show ... 这样,如果在使用这个布局的模板文件里面,没有定义 sidebar 这个区块,就会去使用在这个布局里定义的区块内容。
在它里面,可以再简单的输入一行文字 ...
@section('sidebar')
<h3>sidebar</h3><p>来自 master 布局的边栏内容</p>
@show
保存 ... 回到浏览器 ... 这里会显示 sidebar ,来自 master 布局的边栏内容。
下面,我们可以在使用 master 布局的模板文件里面,重新定义一下 sidebar 这个区块 ...
打开 movie 目录下面的 index.blade.php ... 在这里,使用 @section ... 去定义 sidebar 这个区块 ... 区块结束的位置上,使用 @stop 结束 ...
然后在里面,再去定义要在这个区块上显示的内容 ...
@section('sidebar')
<p>来自 index 模板的边栏内容</p>
@stop
保存 ... 回到浏览器 ...
现在,这里会显示 来自 index 模板的边栏内容 ... 这是因为我们重新定义了 sidebar 区块要显示的内容 .. 所以会覆盖掉在布局上 sidebar 上面的内容 ...
不过,如果你既想把布局上的区块内容显示出来,然后又想显示在模板文件里面重新定义的这个区块的内容 ... 我们可以使用一个 @parent ...
回到 index.blade.php ... 在这个 sidebar 区块里面 ... 输入 @parent ... 这个东西会把布局上的对应的区块内容显示出来 .. 这里应该就是把 master 布局上的 sidebar 区块上的内容显示出来。
保存 ... 再去预览一下 ...
在页面上,sidebar 这个区块上,同时会显示在布局上的这个区块的内容,还会显示使用这个布局的视图文件里面定义的这个区块上的内容。