如果我有一个布局调用RightSideBar.blade.php
,Laravel blade
一个区域yield('content')
和另一个yield('sidebar')
。
default partial
如果正在扩展的视图RightSideBar
没有a ,是否有内置的方式来显示a section('sidebar')
?
我知道您可以默认传递一个值,只是想知道是否有办法将默认设置为部分。
如果我有一个布局调用RightSideBar.blade.php
,Laravel blade
一个区域yield('content')
和另一个yield('sidebar')
。
default partial
如果正在扩展的视图RightSideBar
没有a ,是否有内置的方式来显示a section('sidebar')
?
我知道您可以默认传递一个值,只是想知道是否有办法将默认设置为部分。
大多数时候我们想要多行默认内容,我们可以使用这个语法:
@section('section')
Default content
@show
例如我在模板文件中有这个:
@section('customlayout')
<article class="content">
@yield('content')
</article>
@show
你可以看到@show和@stop/@endsection的区别:上面的代码等价于下面的代码:
@section('customlayout')
<article class="content">
@yield('content')
</article>
@stop
@yield('customlayout')
在其他视图文件中,我可以只设置内容:
@section('content')
<p>Welcome</p>
@stop
或者我也可以设置不同的布局:
@section('content')
<p>Welcome</p>
@stop
@section('defaultlayout')
<div>
@yield('content')
</div>
@stop
@stop 等同于@endsection。
尽管文档仅将默认值指定为字符串,但实际上您可以传递视图
@yield('sidebar', \View::make('defaultSidebar'))
Laravel 5.2 添加了一个@hasSection
指令来检查视图中是否定义了一个部分。由于某种原因,5.3 或 5.4 文档中没有提到它。
@hasSection('sidebar')
@yield('sidebar')
@else
@yield('default-sidebar')
@endif
在Laravel 8中测试:
@yield
可以将默认内容作为第二个参数。它可以是字符串或视图文件
// user-layout.blade.php
@yield('header', View::make('layouts.header'))
您现在可以使用section
@section('header')
<div>New Header</div>
@endsection
//// OR - you can also pass a view file as a second parameter //////
@section('header', View::make('layouts.new-header'))