我正在学习laravel框架,并尝试使用刀片模板引擎。但是我终生无法使用@extends和@section功能在我的项目中工作。
我已经尝试使用不同的浏览器多次重新安装整个项目,然后重新启动计算机,但是我不知道为什么它不显示@section内容
Laravel版本:5.7.28 | IDE:PhpStorm
routes / web.php
Route::get('/', function () {
return view('layouts/index');
});
views / layouts / index.blade.php
<body>
<div class="container-fluid">
<h1>Site Index</h1>
@yield('header')
</div>
</body>
views / header.blade.php
@extends('layouts.index')
@section('header')
<p>Header</p>
@endsection
目前显示的只是在views / layouts / index.blade.php文件中的标记。
非常感谢您为此提供的任何信息。
答案 0 :(得分:3)
这不是模板的工作方式。您必须在return语句中引用子模板。由于@extends
在此子模板中,因此Laravel知道使用提到的主版式。因此,您的退货声明将如下所示:
return view('header');
如果只希望标题显示在每个页面上,则不需要在标题中扩展主版面,只需在主版面中包含标题部分即可。
<body>
<div class="container-fluid">
<h1>Site Index</h1>
@include('header')
</div>
</body>
答案 1 :(得分:0)
我已经测试了看起来可行的视图和布局。检查您的控制器退货声明。尝试return view('header')
;
Route::get('/', function () {
return view('header');
});
答案 2 :(得分:0)
感谢大家的回应,现在我了解了刀片模板引擎如何更好地工作以及我做错了什么。只是为了澄清那些像我一样困惑并遇到此问题的人:
当您通过网络路线重定向到视图时,它必须是从布局母版扩展来的子视图。
routes / web.php
Route::get('/', function () {
return view('index');
});
默认情况下,将显示主文件中的html及其我们正在查看的内容
views / layouts / master.blade.php
<!doctype html>
<html lang="en">
<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')方法使用的索引视图。
views / index.blade.php
@extends('layouts.master')
@section('title', 'Changing the default title')
@section('content')
<p>content displayed</p>
@endsection
我希望这对其他人有帮助。
答案 3 :(得分:0)
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')