2014-09-01 37 views
3

我想用递归的@include标签获取模板的呈现字符串。不幸的是,似乎render()方法不支持递归性:Laravel 4 - 呈现递归@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 2014-09-01 17:14:39

+0

@bishop不能相信这是简单的,谢谢!请添加您的答案,我会接受它:) – 2014-09-01 17:21:26

+0

你走了!欣赏它! – bishop 2014-09-01 18:08:53

回答

2

Laravel要求@指令出现在不同的行上。换句话说,每行只有一个符号。在某些情况下,Laravel会给你一个编译错误:在其他情况下,你只会得到神秘的结果(就像你的情况一样)。

因此,如下重写代码,它应该工作:

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