困惑的Laravel Blade模板化@extends关键字

时间:2014-10-25 14:27:07

标签: php laravel blade

我第一次使用Laravel构建一个简单的应用程序。我一直在观看和阅读有关刀片继承的视频数小时,我看不出我做错了什么。代码目前看起来像这样:

Route.php文件:

Route::get('/', function()
{
   return View::make('home');
});

home.blade.php文件:

@extends('layouts.base')

@section('body')
    @include('body.main')
@stop

//other stuff

扩展布局文件:

<!doctype html>
<html lang="en">

<head>
    //head stuff
</head>
<body>
    <div class="container-fluid">
        <div class="wrapper">
            @yield('body')
        </div><!-- end wrapper -->
    </div><!-- end container -->
</body>
</html>

现在我的问题是我有一个正文文件(下面)我希望有另一个屈服部分。

<div class="row">
    <div class="content col-md-12">
        @yield('card')
    </div>
</div>

和card.blade.php看起来像这样:

@extends('main')

@section('card')
    <div class="card">
        <h2>Hello</h2>
    </div>
@stop

这只是最新版本。我尝试使用不同的布局文件,将extendsyield放在主页面和布局页面的所有不同位置。但没有任何作用。现在我的主要内容是显示但不是卡片文件(我想最终重复使用从雄辩中提取的不同数据)。

我已经阅读了四到五个不同的刀片教程,但即使在我看来它肯定应该也没有任何效果。大多数不包括延伸和屈服过去一层,我没有任何问题。我做错了什么?

1 个答案:

答案 0 :(得分:1)

它的工作方式是这样的,当你拨打View::make时,它会从那里开始“向上”。使用@extends

  1. layouts.base
  2. 当他们去&#39;梯子@yield包括部分。所以你在技术上必须打电话View::make('card')这可能没有意义。 相反,您可能想尝试@include - 卡片模板。

    <强> card.blade.php

    <!-- no section or extends needed -->
    <div class="card">
        <h2>Hello</h2>
    </div>
    

    <强> body.blade.php

    <div class="row">
        <div class="content col-md-12">
            @include('card')
        </div>
    </div>