仅包括Laravel刀片视图的部分

时间:2016-01-04 17:20:51

标签: php laravel view laravel-blade

有没有办法只包含Laravel刀片视图的 部分?

我有一个基本视图,通常包含此视图中的内容。有时候我需要更多的自由并想要一个更简单的基础,所以我将$special标志设置为true。现在我有一个视图,可能都作为“特殊”和普通视图出现。有干净利落的方法吗?

base.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>@yield("title", "placeholder") - website</title>
</head>
<body>
    @if (isset($special) && $special)
        @yield("content")
    @else
        <header>
            website
        </header>
        <main>
            @yield("content")
        </main>
        <footer>&copy; 2099</footer>
    @endif
</body>
</html>

article.blade.php

@extends("base")

@section("title", "10 ways! You won't follow the last!")

@section("content")
So much content.
@endsection

other.blade.php

@extends("base", ["special" => true])

@section("title", "Welcome")

@section("content")
<div id="start">
    Other stuff
</div>
<div id="wooo">
    <main>
        @include("article") ← does not work
    </main>
    <footer>&copy; 2099</footer>
</div>
@endsection

2 个答案:

答案 0 :(得分:0)

我最终制作了一个仅包含该部分的新刀片文件。然后两个页面都包含该刀片模板。

article.blade.php

@extends("base")

@section("title", "10 ways! You won't follow the last!")

@section("content")
@include("common")
@endsection

other.blade.php

@extends("base", ["special" => true])

@section("title", "Welcome")

@section("content")
<div id="start">
    Other stuff
</div>
<div id="wooo">
    <main>
        @include("common")
    </main>
    <footer>&copy; 2099</footer>
</div>
@endsection

common.blade.php

So much content.

答案 1 :(得分:0)

我通常这样做:

我创建了一个base.blade.php,其中包含布局的核心内容。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>

    @yield('body-content')

</body>
</html>

然后我创建了其他扩展基本文件的模板。

例如:
template.blade.php

@extends('base')

@section('body-content')

    <header>
        website
    </header>
    <main>
        @yield("content")
    </main>
    <footer>&copy; 2099</footer>

@endsection

someOtherTemplate.blade.php

@extends('base')

@section('body-content')
    <main>
        @yield("content")
    </main>
@endsection

现在只需扩展您需要的模板。