刀片模板 - @extends 和 @section 不起作用

我正在学习 Laravel 框架并尝试使用刀片模板引擎。但是,我终生无法在我的项目中使用 @extends 和 @section 功能。


我已经尝试多次重新安装整个项目,使用不同的浏览器并重新启动我的机器,但我无法弄清楚为什么它不显示 @section 内容


Laravel 版本:5.7.28 | IDE:PhpStorm


路线/ web.php


Route::get('/', function () {

    return view('layouts/index');

});

视图/布局/index.blade.php


<body>

<div class="container-fluid">

    <h1>Site Index</h1>

    @yield('header')

</div>

</body>

意见/header.blade.php


@extends('layouts.index')


@section('header')

    <p>Header</p>

@endsection

目前显示的只是 views/layouts/index.blade.php 文件中的标签。


非常感谢您对此提出的任何意见。


呼啦一阵风
浏览 268回答 3
3回答

慕的地6264312

这不是模板的工作方式。您必须在 return 语句中引用子模板。因为@extends在这个子模板中,Laravel 知道使用提到的主布局。所以你的退货声明应该是这样的:return view('header');如果您只想在每个页面上显示页眉,则无需在页眉中扩展主布局,只需在主布局中包含页眉部分即可。<body><div class="container-fluid">&nbsp; &nbsp; <h1>Site Index</h1>&nbsp; &nbsp; @include('header')</div></body>

牧羊人nacy

If you want to show content of section('header') then you must return header view likeRoute::get('/', function () {&nbsp; &nbsp; return view('header');});this is because contents are in header view and you have been extending layout.indexso if you return layout.index view you will not see content of section('header')&nbsp;&nbsp;

万千封印

现在我明白了刀片模板引擎如何工作得更好一点,以及我是如何做错的。只是为了澄清其他像我一样感到困惑并遇到这个线程的人:当您通过 Web 路由重定向到视图时,它必须是从布局母版扩展的子级。路线/ web.phpRoute::get('/', function () {&nbsp; &nbsp; return view('index');});然后将默认显示主文件中的 html 及其我们正在“查看”的内容视图/布局/master.blade.php<!doctype html><html><head>&nbsp; &nbsp; <meta charset="UTF-8">&nbsp; &nbsp; <meta name="viewport"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">&nbsp; &nbsp; <meta http-equiv="X-UA-Compatible" content="ie=edge">&nbsp; &nbsp; <title>@yield('title', 'default title if unspecified')</title></head><body>&nbsp; &nbsp; <h1>Master Header</h1>&nbsp; &nbsp; @yield('content')</body></html>要处理页面的内容,然后使用 @section('content') 方法处理它的索引视图。意见/index.blade.php@extends('layouts.master')@section('title', 'Changing the default title')@section('content')&nbsp; &nbsp; <p>content displayed</p>@endsection我希望这对其他人有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP