Laravel / Blade - 在同一页面上多次扩展相同的模板

时间:2014-09-24 20:52:07

标签: laravel blade

因此必须有一个简单的方法...在我的网站上有多种模式,具体取决于页面。我已经创建了一个可以扩展的模态模板。但是,我在页面上包含的最后一个模态最终会“接管”其余的模式,所以我的所有模态都会以最后一个包含的相同部分结束。我怎样才能使每个扩展名对于扩展它的文件是唯一的?

正在发生的事情的例子:

//template.blade.php
<htmls and stuff>
    @yield('section_1')
    @yield('section_2')
</htmls and stuff>

//Modal 1
@extends('template')
@section('section_1')
    Some words
@stop
@section('section_2')
    More words
@stop

//Modal 2
@extends('template')
@section('section_1')
    Rabbit
@stop
@section('section_2')
    Stew
@stop

而不是加载两个独特的模态,我最终得到了两个充满兔子炖肉的模态。

3 个答案:

答案 0 :(得分:4)

我个人会在这个例子中使用includes,除非你的章节中有标记。如果它只是文本你可以做这样的事情:

//template.blade.php
<htmls and stuff>
    {{ $section1 }}
    {{ $section2 }}
</htmls and stuff>

//Modal 1
@include('template', ['section1' => 'Some words', 'section2' => 'More words'])

//Modal 2
@include('template', ['section1' => 'Rabbit', 'section2' => 'Stew'])

答案 1 :(得分:4)

尝试使用@overwrite命令代替@endsection

示例:

@section('stuff')
     Stuff goes here...
@overwrite

来源:https://github.com/laravel/framework/issues/1058#issuecomment-17194530

答案 2 :(得分:-1)

我遇到了同样的问题。我真的也想使用Blade模板,但最终使用php include,即使使用基本的html标记

//Modal 1
@include('layout.template', array(
'section1'         => 
'<h1>Modal 1</h1><p><b>Some</b> words</p>',

'section2'         => 
'<p>Some <u>words</u></p>'

))
//Modal 2
@include('layout.template', array(
'section1'         => 
'<h1>Modal 2</h1><p><b>Some</b> words</p>',

'section2'         => 
'<p>Some <u>words</u></p>
<a href="http://stackoverflow.com"></a>'

))

标记一切正常,包括链接。我遇到麻烦的地方是我想使用include 里面的包含数组,我不明白。这就是我想使用刀片模板的原因。