2010-01-05 45 views
0

我有一個Dwoo模板 - 在示例base.html中,並且有一個數組$data在包含的Dwoo模板中重新分配父變量

{assign '' 'globalVar'} {* $globalVar empty right now *} 


{foreach $data element} 
    {include '_partial.html'} 
{/foreach} 

... 

<b>{$globalVar}</b> 

這裏是_partial.html

<p> 
    {$element.someText} 
</p> 

{assign "$globalVar $element.someVar" 'globalVar'} 

我想獲得什麼?在每一個部分文件我想修改一些$globalVar,我想{foreach}後使用。

這裏是一件重要的事情 - 我不想在base.html中做部分的{assign}!只在_partial.html

是否有可能通過引用,因此部分文件傳遞$globalvar_partial.html會修改這個變量?

回答

0

我沒有找到任何真正的解決辦法 - 只是這種解決方法:

Dwoo允許訪問超全局VAR提供$dwoo.get.variable$dwoo.post.variable等。

我們可以得到或者還成立數據,所以在_partial.html我做是這樣的:

{$dwoo.env.globalVar "$globalVar $element.someVar"} 

base.html我可以現在訪問

1

我會說,你可以採取兩種方法,但有從模板本身做到這一點真的沒有好辦法。

最簡單的是剛剛創建之前aclling $ dwoo-變量>獲得,並通過引用分配給它,如果您使用的是Dwoo_Data對象,你只是做:

$globalVar = ''; 
$data->assignByRef('globalVar', $globalVar); 

如果你不使用Dwoo_Data對象,而是執行此操作:

$globalVar = ''; 
$data['globalVar'] =& $globalVar; 

即基本上初始化變量作爲參考,所以那麼它將沿作爲對包含模板的引用傳遞。

然後在局部模板我會建議分配一樣,因爲它更容易,但是這取決於你:

{$globalVar .= $element.someVar} 

另一種選擇是隻換上新的stdClass的()對象在您的數據,然後您可以分配的東西它像

{$globalObj->stuff .= $element.someVar} 

而且由於它是一個對象,它會通過引用自動傳遞,這樣也可以解決你的問題。

所以,是的,它是可行的,但你到「規劃」在模板中是之前的,因爲你不能只從一個包含數據傳遞迴父模板。我希望有幫助, 乾杯