1

我在使用 Blade 和 Laravel 4 时遇到了一个严重的问题,特别是我需要有一个部分来改变它的内容,这些变量由父部分处理。

举个例子,看看那个

控制器.php

<?php

$data = array('rows' => array('a', 'b', 'c', 'd'));
View::make('users-list', $data);

?>

用户列表.blade.php

@extends('base-list')
@section('table-row')
my {{ $row }}
@overwrite

base-list.blade.php

@section('table')
foreach($rows as $row)
{
    @section('table-row')
    {{ $row }}
    @stop
    @yield('table-row')
}
@show

问题是我得到了未定义$row的变量,因为用户列表模板在基本列表模板之前被解析并执行。

为了解决我所做的问题:

base-list.blade.php

@section('table')
foreach($rows as $row)
{
    {{ View::make('base-list-row', array('row', $row)) }}
}
@show

基本列表-row.blade.php

{{ $row }}

但是,说真的,我看不到那个:\

因为在使用 @extends 时模板是从子级渲染到父级的,所以我什至无法使用该$__env->share('row', $row)技巧,因为子级在父级之前执行。

有人有解决方案或更好的解决方法吗?

4

0 回答 0