Laravel Blade 模板部分重复/缓存错误
Posted
技术标签:
【中文标题】Laravel Blade 模板部分重复/缓存错误【英文标题】:Laravel Blade Templates Section Repeated / cache error 【发布时间】:2013-09-10 15:54:04 【问题描述】:我希望引导我的网站,因此,我已将常用的 twitter 引导组件放入刀片模板中。
sidebar.blade.php
@include('panel1')
@include('panel2')
panelTemplate.blade.php
<div class="panel panel-primary">
<div class="panel-heading">
<div class="panel-title">
@yield('title')
</div>
</div>
<div class="panel-body">
@yield('body')
</div>
<div class="panel-footer">
@yield('footer')
</div>
</div>
这样,每次我想使用面板时,我都可以使用@extends('panelTemplate')
。
panel1.blade.php
@extends('panelTemplate')
@section('title')
title panel 1
@stop
@section('body')
body panel 1
@stop
@section('footer')
footer panel 1
@stop
panel2.blade.php
@extends('panelTemplate')
@section('title')
title panel 2
@stop
@section('body')
body panel 2
@stop
@section('footer')
footer panel 2
@stop
我面临的问题是,不是显示panel1.blade.php
的内容,而是sidebar.blade.php
中声明的panel2.blade.php
的内容panel1.blade.php
的内容被重复(显示两次)。
Blade 是否缓存了请求,这就是 panel1 重复两次的原因?有没有办法覆盖这种行为,或者我是否以从未想过的方式使用刀片模板引擎?
【问题讨论】:
【参考方案1】:您可以通过overwriting 部分来实现这一点。尝试您已经拥有的,但使用这两个更新的子视图:
panel1.blade.php
@extends('panelTemplate')
@section('title')
title panel 1
@overwrite
@section('body')
body panel 1
@overwrite
@section('footer')
footer panel 1
@overwrite
panel2.blade.php
@extends('panelTemplate')
@section('title')
title panel 2
@overwrite
@section('body')
body panel 2
@overwrite
@section('footer')
footer panel 2
@overwrite
它在这里已经过测试和工作,虽然我不确定它是否是 @overwrite
的预期用途,所以请彻底测试!
【讨论】:
优秀的答案!不幸的是,您的链接已损坏,我无法在文档中找到有关@overwrite
的任何信息。很高兴答案就在这里!
@samrap - 好了,链接更正了 :) - 它在 4.2 版中,你必须检查 Laravel 的 v5 ..
我认为 Laravel 的第 5 版中不存在相同的方法......你必须检查如何最好地实现你需要做的事情 - 最好的起点在这里:@987654322 @
我使用的是 5.1,这个方法运行良好,奇怪的是它不在文档中。也许它已被弃用?以上是关于Laravel Blade 模板部分重复/缓存错误的主要内容,如果未能解决你的问题,请参考以下文章