Subvisualização múltipla e aninhada no Laravel 4

No Laravel 4, conforme descrito na documentação , podemos passar uma subvisualização para uma visão.

$view = View::make('root.view')
->nest('child', 'child.view', $data);

Em alguns casos triviais, podemos ter que aninhar a visão dentro de outra visão aninhada, ou mostrar muitas subvisualizações (que podem ser geradas por código) no mesmo lugar. Apenas a nestfunção não é suficiente para esses casos.

No entanto, sem mencionar na documentação, podemos passar uma instância de View(ou Renderable) como os dados da visão com a withfunção simples . Eles serão renderizados antes de serem usados ​​na visualização pai ( fonte ).

Por exemplo, com nossa função de controlador:

public function showNestedViews() {
$level2ContainerView
= View::make('container')
->with('content', 'Hello World!');
$level1ContainerView
= View::make('container')
->with('content', $level2ContainerView);
$rootContainerView
= View::make('container')
->with('content', $level1ContainerView);
return $rootContainerView;
}

e o containermodelo:

<div>{{ $content }}</div>

irá gerar este resultado:

<div>
<div>
<div>Hello World!</div>
<div>
</div>

Mesmo uma matriz de instâncias de visualização é adequada, apenas use @foreachpara iterar e mostrar cada subvisualização.

Por exemplo, podemos gerar uma lista de widgets com esta função de controlador:

public function showWidgets() {
for ($i = 0; $i < 5; $i++) {
$widgets
[] = View::make('widget');
}
$widgetListView
= View::make('widget_list')
->with('widgets', $widgets);
return $widgetListView;
}

e este widget_listmodelo:

<ul>
@foreach($widgets as $widget)

<li>{{ $widget }}</li>
@endforeach

</ul>