【问题标题】:how do I use partials in Laravel 5?如何在 Laravel 5 中使用局部变量?
【发布时间】:2018-06-19 19:33:55
【问题描述】:

今天我们在学校开始了 Laravel 5 课程。所以我开始在网上搜索以重新使用东西。我已经阅读了一些关于部分、组件和产量的内容,但我仍然不太了解。

在我的resources/views 文件夹中,我有一个名为home.blade.php 的文件。 它包含这个导航栏:

<nav class="navbar navbar-inverse">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">Logo</a>
    </div>
    <div class="collapse navbar-collapse" id="myNavbar">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li><a href="/about">About</a></li>
        <li><a href="/contact">Contact</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="/control-panel"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
      </ul>
    </div>
  </div>
</nav>

现在在我的about.blade.php 中,我想使用相同的代码而无需复制和粘贴。因此,如果我进行更改,它将立即更改两个导航栏,而无需更改 2 次。

有人可以向我解释如何在不复制和粘贴的情况下重复使用此导航栏吗?

提前致谢,Sylent。

【问题讨论】:

  • 这就是整个问题,我正在寻找一种方法来重新使用导航栏,而无需一直复制粘贴。但我实际上有 0 Laravel 知识,所以我尝试的一切都不起作用
  • 简短回答:将导航放入其自己的刀片文件中。使用@yield 包含该导航
  • 这里是文档,您可以在其中找到所有答案:laravel.com/docs/5.5/blade
  • 请更新问题标题。 “事物”应该命名为“部分”(或至少是“html”)

标签: php laravel-5 blade


【解决方案1】:

创建一个新文件夹并将其命名为 partials。在那里,您可以将导航、页眉和页脚都作为单独的刀片文件。

然后您将(通常)创建一个布局刀片,其中包含结构并包含导航、页眉和页脚。

然后,您将为 home 和 about 扩展该布局,并通过创建一个名为 content 的部分来封装每个 home 和 about 的任何内容。

然后您将在布局中生成内容。

https://laravel.com/docs/5.5/blade

#navigation /resources/views/partials/navigation.blade.php
<nav>
...
</nav>

#header /resources/views/partials/header.blade.php
<header>
...
</header>


#footer /resources/views/partials/footer.blade.php
<footer>
...
</footer>

#layout /resources/views/layouts/layout.blade.php
@include('partials.header')

@include('partials.navigation')

    <div class="main-content">
        @yield('content')
    </div>

@include('partials.footer')

#home /resources/views/page/home.blade.php
@extends('theme.layouts.layout')

@section('content')
    <p>Anything within home</p>
@endsection

#about /resources/views/page/about.blade.php
@extends('theme.layouts.layout')

@section('content')
    <p>Anything within about</p>
@endsection

【讨论】:

  • 所以我需要创建一个名为partials 的文件夹并将我的导航栏放在那里。然后在我的home.blade.php 中使用@yield('navbar)'
  • @Sylent 我更新了我的帖子。上面显示了典型的格式,以及它是如何工作的。
  • 哦,原来如此,我想不通。我只是尝试了 1 个部分,它起作用了。我非常感谢帮助。我猜这会让 DRY 更容易
  • 谢谢!多年来一直在寻找这个,当你按照你的方式布置它时是如此简单!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 2015-10-18
  • 2021-08-19
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多