Laravel刀片-链/嵌入多个布局

Laravel刀片-链/嵌入多个布局,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')) @节(“内容”)

在我最喜欢的模板框架中,它们通常能够嵌套布局。这在刀片中是可能的吗

例如

master.blade.php

@产量(‘含量’)
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

导航内容

面包屑含量

关于内容


我在问题中添加了一些内容。这有帮助吗?此外,链接布局的目的是避免重复任何标记。当版面链接并且您正在选择内容的注入点时。然后,面包屑就变成了使用面包屑布局并向其传递几个值的问题。绝对没有重复标记…没有条件包含。通常,主布局在该点上有三个…可能有四个
部分<代码>内容
脚本
样式
,可能还有一个
搜索引擎优化
内容区域。