繁体   English   中英

如何在Laravel的刀片引擎中的另一个视图内插入一个视图

[英]How can I insert a view inside another view in blade engine in Laravel

如何在Laravel的刀片引擎中将视图刀片插入另一个视图中

我正在一个包含以下内容的项目中工作:主页视图......“ home.blade.php

我想添加另一个页面“ home2.blade.php

所以最后我得到了1个页面,即“ home.blade.php ”,但其中包含“ home2.blade.php

这是home2.blade.php

@extends('layouts.app')

@section('content')

<!-- All Posts -->
@if(count($posts) > 0)

<div class="panel panel-default">
    <div class="panel-heading">
        All Posts
    </div>

    <div class="panel-body">
        <table class="table table-striped task-table">

            <!-- Table Headings -->
            <thead>
                <th>Title</th>
                <th>Content</th>
            </thead>

            <!-- Table Body -->
            <tbody>
            @foreach($posts as $post)
                <tr>
                    <td class="table-text">
                        <div>{{$post->title}}</div>
                    </td>
                    <td class="table-text">
                        <div>{{$post->content}}</div>
                    </td>
                </tr>
            @endforeach
            </tbody>
        </table>
    </div>
</div>

  @endif

  @endsection

这是“ home.blade.php

<html lang="en">
<head>
<meta charset="utf-8">

</head>

 <body data-spy="scroll" data-offset="0" data-target="#navigation">


  <!-- Fixed navbar -->
  <div id="navigation" class="navbar navbar-default navbar-fixed-top">
  <div class="container">
    <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" 
  data-target=".navbar-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>

    </div>

在home.blade.php中使用include()

例如:如果您的home2位于resources/views/

@include('home2')

您可以使用@include('filename')指令。 laravel文档

<html lang="en">

<head>
    <meta charset="utf-8">

</head>

<body data-spy="scroll" data-offset="0" data-target="#navigation">

<!-- Fixed navbar -->
<div id="navigation" class="navbar navbar-default navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>

        @include('home2') <-- your home2.blade.php file will be added here

好的,这就是我尝试过的方法,我可以确认这一点,至少对于Laravel 5+(我有L5.2)有效。 这是我建议您使用刀片模板的方式。

让我们开始说,要让一个部分进入另一个部分,您必须在定义容器部分之前定义包含的部分。 因此,我很清楚地解决了这种情况:

我有一个主刀片(main.blade.php)模板,该模板具有以下内容:

<section class="content">
  <!-- Your Page Content Here -->
  @yield('main-content')
</section><!-- /.content -->

我有第二个刀片(common.blade.php)模板,该模板具有您可能希望在许多页面上显示的通用内容以及定义了“主要内容”部分的位置。 这个看起来像:

@section('main-content')
   <div class="container">
      @yield('extra-content')
   </div>
@endsection

最终,我得到了第三个模板(test.blade.php),该模板扩展了主模板并包含了我要显示的常见内容,但请注意,因为顺序很重要。 这个看起来像:

@extends('main')
@section('extra-content')
   <div>
      <span> This is a test! </span>
   </div>
@endsection
@include('common')

在您的控制器或路线中(无论返回视图的位置),都应返回第三个模板。

希望这个能对您有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM