我在使用 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)
技巧,因为子级在父级之前执行。
有人有解决方案或更好的解决方法吗?