为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
呼啦一阵风 2021-08-28 18:26:58
我正在学习 Laravel 框架并尝试使用刀片模板引擎。但是,我终生无法在我的项目中使用 @extends 和 @section 功能。我已经尝试多次重新安装整个项目,使用不同的浏览器并重新启动我的机器,但我无法弄清楚为什么它不显示 @section 内容Laravel 版本:5.7.28 | IDE:PhpStorm路线/ web.phpRoute::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 文件中的标签。非常感谢您对此提出的任何意见。
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

这不是模板的工作方式。您必须在 return 语句中引用子模板。因为@extends在这个子模板中,Laravel 知道使用提到的主布局。所以你的退货声明应该是这样的:


return view('header');

如果您只想在每个页面上显示页眉,则无需在页眉中扩展主布局,只需在主布局中包含页眉部分即可。


<body>

<div class="container-fluid">

    <h1>Site Index</h1>

    @include('header')

</div>

</body>


查看完整回答
反对 回复 2021-08-28
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

If you want to show content of section('header') then you must return header view like


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

    return view('header');

});


this is because contents are in header view and you have been extending layout.index


so if you return layout.index view you will not see content of section('header')  


查看完整回答
反对 回复 2021-08-28
?
万千封印

TA贡献1891条经验 获得超3个赞

现在我明白了刀片模板引擎如何工作得更好一点,以及我是如何做错的。只是为了澄清其他像我一样感到困惑并遇到这个线程的人:


当您通过 Web 路由重定向到视图时,它必须是从布局母版扩展的子级。


路线/ web.php


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

    return view('index');

});

然后将默认显示主文件中的 html 及其我们正在“查看”的内容


视图/布局/master.blade.php


<!doctype html>

<html>

<head>

    <meta charset="UTF-8">

    <meta name="viewport"

          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>@yield('title', 'default title if unspecified')</title>

</head>

<body>

    <h1>Master Header</h1>

    @yield('content')

</body>

</html>

要处理页面的内容,然后使用 @section('content') 方法处理它的索引视图。


意见/index.blade.php


@extends('layouts.master')


@section('title', 'Changing the default title')


@section('content')

    <p>content displayed</p>

@endsection

我希望这对其他人有帮助。


查看完整回答
反对 回复 2021-08-28
  • 3 回答
  • 0 关注
  • 267 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信