2010-01-05 77 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} 

而且由于它是一个对象,它会通过引用自动传递,这样也可以解决你的问题。

所以,是的,它是可行的,但你到“规划”在模板中是之前的,因为你不能只从一个包含数据传递回父模板。我希望有帮助, 干杯