我的网站结构如下:
首先:master.blade.php
:这包含section('content')
<body>
@include('partial.header')
@yield('content')
@include('partial.footer')
</body>
第二个index.blade.php
:包含section('content')
。
@extends('layouts.master')
@section('content')
<div id="container">
<div id="news">
@yield('news')
</div>
<div id="apartment">
@yield('apartment')
</div>
</div> <!-- ./container -->
@endsection
第三:news.blade.php
:这很简单,可以显示所有news
@foreach($posts as $post)
@endforeach
最终文件:apartment.blade.php
:这很简单,可以显示所有apartment
。
@foreach($apartments as $apartment)
@endforeach
我的路线指向master.blade.php
。
我的问题是:
当我在news
中添加@yield('news')
index.blade.php
时。它在我的数据库中显示正确的所有news
。
但是当我在@yield('news')
中删除index.blade.php
时。它还显示我的数据库中的news
(但它丢失了css / js)。
为什么我删除@yield('news')
,我的网页上不应显示任何news
?
似乎Laravel Blade不支持@yield
中的两个@section
。当我只在@yield('news')
文件中添加1行index.blade.php
时。它在我的索引页面上显示列表新闻。当我继续添加@yield('apartment')
时。索引页面上没有显示任何公寓。我肯定在foreach
获取数据时有值。我还测试了HTML静态,但没有任何变化。
答案 0 :(得分:0)
我的路线指向master.blade.php。
索引扩展了master,因此请将路由指向索引视图。
如果继续产生部分,删除@yield后,我认为框架正在加载缓存视图。
尝试清除视图缓存php artisan view:clear
或使用php artisan --help view:clear
寻求帮助。
@yield也会在父子关系中产生一个部分。
如果新闻在部分文件夹或路径中,则将收益更改为包括@include('partial.news')
。可以使用@isset
或@empty
语句甚至@forelse
循环来处理渲染。