2014-09-01 2 views
3

Я хотел бы получить визуализированную строку шаблона с рекурсивными тегами @include. К сожалению, кажется, что метод render() не поддерживает рекурсивность:Laravel 4 - Render recursive @include

return View::make('bind', $data)->render(); 

Это мое мнение:

{{$namespace}}\Decorators\{{$decorators[$i++]}} 
<?php $tab = str_repeat("\t", $i) ?> 

{{$tab}}(
    {{$tab}}new @if(count($decorators) < $i)@include('bind')@endif 

{{$tab}}) 

Это то, что я должен получить:

Workflows\Decorators\Foo 
(
    new Workflows\Decorators\Bar 
    (
     new 
    ) 
) 

Этот это то, что я получаю:

Workflows\Decorators\Foo 
(
    new @include('bind') 
) 

Тем не менее, если я отображаю представление вместо его рендеринга, я могу видеть правильный исходный код.

Есть ли способ визуализации представлений рекурсивно?

+1

Помещенный @ директивы на разных линиях? Я считаю, что существует ограничение, которое предусматривает одну вещь в строке. – bishop

+0

@bishop не может поверить, что это было просто, спасибо! Пожалуйста, добавьте свой ответ, и я приму его :) –

+0

Там вы идете! Ценить это! – bishop

ответ

2

Laravel требует, чтобы директивы @ отображались на отдельных строках. Говорят иначе, только один знак на строку. В некоторых случаях Laravel дает вам ошибку компиляции: в других вы получаете только таинственные результаты (как и ваш случай).

Итак, переписать код, как показано ниже, и он должен работать:

@if (count($decorators) < $i) 
    @include('bind') 
@endif