【发布时间】:2023-03-23 15:55:02
【问题描述】:
在我最喜欢的模板框架中,它们通常具有嵌套布局的能力。这在 Blade 中是可能的吗?
例如...
master.blade.php
<html>
<head><!-- stuff --></head>
<body>
@yield('content')
</body>
</html>
nav.blade.php
@extend('master')
<nav>
<!-- nav content -->
</nav>
@yeild('content')
面包屑.blade.php
@extend('nav')
<breadcrumb>
<!-- breadcrumb content -->
</breadcrumb>
@yield('content')
home.blade.php
@extend('nav')
@section('content')
<home>
<!-- content -->
</home>
@endsection
about.blade.php
@extend('breadcrumb')
@section('content')
<about>
<!-- content -->
</about>
@endsection
我喜欢这种格式的原因是,它使得能够选择注入点变得非常优雅 (IMO)!
- 有一个一次性的目标网页...参考大师
- 对于主页...参考导航
- 对于任何子页面(关于/导航/产品)参考面包屑
布局级联和'content' 将使用已编译的html 在树上向上重建。
这可能吗?我希望避免在布局中使用@include,因为我个人觉得它们很麻烦而且有点眼痛,尤其是当您遇到经常重复但并非无处不在的元素时(面包屑)。
编辑:基于答案。
理想情况下,'content' 将被重建并向上传递嵌套布局链。即,如果您有引用 nav.blade.php 的主页,则主页内容将添加到导航布局并编译。然后由于导航布局引用master.blade.php,编译后的布局将被传递给master并再次构建。不得复制任何内容。
【问题讨论】:
标签: laravel blade laravel-5.4 laravel-blade