2015-03-31 40 views
1

刚刚注意到Laravel 5中扩展视图的奇怪行为。它看起来像Laravel中的一个错误,我准备了简单代码,以便您可以轻松再现它:Laravel 5 - 扩展模板中的潜在错误(@yield,@extends)

控制器:

$items = [ 
    ['id' => 1], 
    ['id' => 2], 
]; 

return view('list', [ 
    'items' => $items 
]); 

list.blade.php:

@foreach ($items as $item) 
    @include('single-extended', $item) 
@endforeach 

single.blade.php:

<div>id: {{ $id }}</div> 

@yield('block') 

单extended.blade.php:

@extends('single') 

@section('block') 
    <div>id in extended: {{ $id }}</div> 
@endsection 

电流输出:

id: 1 
id in extended: 1 
id: 2 
id in extended: 1 

预期输出:

id: 1 
id in extended: 1 
id: 2 
id in extended: 2 

这是一个错误还是我做错了什么?

回答

1

尝试使用@overwrite而不是@endsection(这是从Laravel 3开始的deprecated - 在基本情况下应该使用@stop)。

+0

不知道''@ endsection''已被弃用,thx!刚试过''@ stop'',结果相同。 – 2015-03-31 15:13:55

+0

[此评论](https://github.com/laravel/framework/issues/1058#issuecomment-17194530)在Github问题上建议尝试使用'@ overwrite'来代替。你可以试试吗? – christophetd 2015-03-31 15:20:52

+0

你是我的英雄,它的作品!修改你的答案,以便我可以接受它。 – 2015-03-31 15:22:44