我在使用更简单的系统(主要是WP和原始PHP)后,学习如何为Laravel编写代码。为此,我运行了最新版本并遵循Laravel 5的教程:
https://tutorials.kode-blog.com/laravel-blade-template
但是,我遇到了一个问题。我在扩展主版面部分,要求您在/resources/views/page.blade.php
上创建一个文件,其中包含以下内容:
@extends('layouts.master')
@section('title', 'Page Title')
@section('sidebar')
<p>This is appended to the master sidebar.</p>
@endsection
@section('content')
<p>This is my body content.</p>
@endsection
位于/resources/views/layouts/master.blade.php
的主布局包含以下内容:
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@section('sidebar')
This is the master sidebar.
@show
<div class="container">
@yield('content')
</div>
</body>
</html>
根据教程,在路由之后访问http://localhost/larashop/public/blade
时的结果应该是以下几行:
This is the master sidebar.
This is appended to the master sidebar.
This is my body content.
然而,相反,我得到了:
This is appended to the master sidebar.
This is my body content.
由于某些原因,代码忽略了代码的This is the master sidebar.
部分,或者将其替换为@section('sidebar')
中的内容。我将添加代码处理正常,否则主模板中的<p></p>
和<div></div>
会显示在应有的位置。它只是侧边栏的默认内容。如果我将@show
替换为@yield('sidebar')
,它确实显示正常,但我真的很好奇这里发生了什么,如果由于某种原因我做错了。
我相信可能存在版本差异,因为本教程适用于5.0而我是5.4版本,但我无法找到任何指向变更内容和原因的内容,以及在我继续前进之前,我想知道这一点,因为我担心我会发现更多像这样的问题。
我已经发现教程和我的安装之间存在差异,即/app/Http/routes.php
代替/routes/web.php
,但很容易找到有关的信息。对于这个,我找不到任何东西,所以有人可以帮助我吗?
答案 0 :(得分:0)
在你的page.blade.php中
。
。
它应该是@yield('sidebar')而不是@section('sidebar')
答案 1 :(得分:0)
刚刚找到答案。如果这是因为Laravel版本之间的变化或教程是错误的,我不知道。问题,根据本教程:
https://laravel.com/docs/5.4/blade
侧边栏部分内page.blade.php
是否缺少@parent
。因此,该文件应为:
@extends('layouts.master')
@section('title', 'Page Title')
@section('sidebar')
@parent
<p>This is appended to the master sidebar.</p>
@endsection
@section('content')
<p>This is my body content.</p>
@endsection
这样,该部分将首先呈现,包括其父部分的内容。