2014-09-01 49 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