我正在使用Blade和Laravel 4面临一个严重的问题,特别是我需要一个部分来改变它由父部分处理的变量的内容。
举个例子,看看那个
Controller.php这样
<?php
$data = array('rows' => array('a', 'b', 'c', 'd'));
View::make('users-list', $data);
?>
用户-list.blade.php
@extends('base-list')
@section('table-row')
my {{ $row }}
@overwrite
基list.blade.php
@section('table')
foreach($rows as $row)
{
@section('table-row')
{{ $row }}
@stop
@yield('table-row')
}
@show
问题在于我得到了未定义的变量$row
,因为解析了用户列表模板并在基本列表模板之前执行。
解决我遇到的问题:
基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)
技巧,因为子节点在父节点之前执行。
有人有解决方案或更好的解决方法吗?