Laravel刀片-链/嵌入多个布局
在我最喜欢的模板框架中,它们通常能够嵌套布局。这在刀片中是可能的吗 例如 master.blade.phpLaravel刀片-链/嵌入多个布局,laravel,blade,laravel-5.4,laravel-blade,Laravel,Blade,Laravel 5.4,Laravel Blade,在我最喜欢的模板框架中,它们通常能够嵌套布局。这在刀片中是可能的吗 例如 master.blade.php @产量(‘含量’) nav.blade.php @extend('master') @yeild(‘内容’) breadcrumb.blade.php @extend('nav')) @产量(‘含量’) home.blade.php @extend('nav')) @节(“内容”) @端部 关于.blade.php @extend('breadcrumb')) @节(“内容”)
@产量(‘含量’)
nav.blade.php
@extend('master')
@yeild(‘内容’)
breadcrumb.blade.php
@extend('nav'))
@产量(‘含量’)
home.blade.php
@extend('nav'))
@节(“内容”)
@端部
关于.blade.php
@extend('breadcrumb'))
@节(“内容”)
@端部
我喜欢这种格式的原因是,它使它非常优雅(IMO)能够选择您的注射点
- 有一个一次性登录页…参考母版
- 主页…参考导航
- 对于任何子页面(关于/nav/产品),请参考面包屑
'content'
随着编译的html
在树上的上升而重建
这可能吗?我希望避免在布局中使用@include
,因为我个人觉得它们很麻烦,而且有点刺眼,特别是当你看到经常重复但不是到处都是的元素(面包屑)时
编辑:基于答案
理想情况下,
“内容”
将被重建并传递到嵌套布局链上。i、 e.如果您的主页引用了nav.blade.php
,那么主页内容将添加到nav布局中并进行编译。然后,由于导航布局引用了master.blade.php
,编译后的布局将被传递到master
,并再次构建。禁止复制任何内容。我不确定我是否得到了您想要的内容。例如,在home.blade.php
中,您扩展了“nav”,后者又扩展了“master”,但“master”和“nav”都会产生内容
,因此
内容将呈现两次
那么,您的预期输出是什么?我不确定“home”或“about”是否应该扩展到“nav”或“breadcrumb”。我认为这两个组件属于结构化布局组件,因此在主布局中包含它们对我来说是有意义的。在“导航”中,当视图需要面包屑时,可以定义要扩展的部分
例如:
master.blade.php
<html>
<head><!-- stuff --></head>
<body>
@include('nav')
@yield('content')
</body>
</html>
<nav>
<!-- nav content -->
@yield('breadcrumb')
</nav>
@extend('master')
@section('content')
<home>
<!-- content -->
</home>
@endsection
@extend('master')
@section('breadcrumb')
<breadcrumb>
<!-- breadcrumb content -->
</breadcrumb>
@endsection
@section('content')
<about>
<!-- content -->
</about>
@endsection
@包括('nav')
@产量(‘含量’)
nav.blade.php
<html>
<head><!-- stuff --></head>
<body>
@include('nav')
@yield('content')
</body>
</html>
<nav>
<!-- nav content -->
@yield('breadcrumb')
</nav>
@extend('master')
@section('content')
<home>
<!-- content -->
</home>
@endsection
@extend('master')
@section('breadcrumb')
<breadcrumb>
<!-- breadcrumb content -->
</breadcrumb>
@endsection
@section('content')
<about>
<!-- content -->
</about>
@endsection
@产量(“面包屑”)
home.blade.php
<html>
<head><!-- stuff --></head>
<body>
@include('nav')
@yield('content')
</body>
</html>
<nav>
<!-- nav content -->
@yield('breadcrumb')
</nav>
@extend('master')
@section('content')
<home>
<!-- content -->
</home>
@endsection
@extend('master')
@section('breadcrumb')
<breadcrumb>
<!-- breadcrumb content -->
</breadcrumb>
@endsection
@section('content')
<about>
<!-- content -->
</about>
@endsection
@extend('master')
@节(“内容”)
@端部
关于.blade.php
<html>
<head><!-- stuff --></head>
<body>
@include('nav')
@yield('content')
</body>
</html>
<nav>
<!-- nav content -->
@yield('breadcrumb')
</nav>
@extend('master')
@section('content')
<home>
<!-- content -->
</home>
@endsection
@extend('master')
@section('breadcrumb')
<breadcrumb>
<!-- breadcrumb content -->
</breadcrumb>
@endsection
@section('content')
<about>
<!-- content -->
</about>
@endsection
@extend('master')
@节(“面包屑”)
@端部
@节(“内容”)
@端部
您忘记使用@parent
。下面是一个例子:
master.blade.php
home.blade.php
在本例中,content
部分使用@parent
指令将内容追加(而不是覆盖)到版面的侧栏。呈现视图时,@parent
指令将替换为布局的内容
@extends('nav')
@section('content')
{{-- You can control where @parent should be rendered --}}
@parent
<home>
<p>home content</p>
</home>
{{-- You can put your @parent here, give it a try --}}
@endsection
about.blade.php
about.blade.php
导航内容
面包屑含量
关于内容
我在问题中添加了一些内容。这有帮助吗?此外,链接布局的目的是避免重复任何标记。当版面链接并且您正在选择内容的注入点时。然后,面包屑就变成了使用面包屑布局并向其传递几个值的问题。绝对没有重复标记…没有条件包含。通常,主布局在该点上有三个…可能有四个部分<代码>内容
,脚本
,样式
,可能还有一个搜索引擎优化
内容区域。