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 nest
funçã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 with
funçã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 container
modelo:
<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 @foreach
para 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_list
modelo:
<ul>
@foreach($widgets as $widget)
<li>{{ $widget }}</li>
@endforeach
</ul>