我有一个Dwoo
模板 - 例如base.html
,并且有一个数组$data
。
{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}
。
这是一件很重要的事情 - 我不想在{assign}
中做部分base.html
!仅限于_partial.html
。
是否可以通过引用将$globalvar
传递给_partial.html
,因此部分文件会修改此变量?
答案 0 :(得分:1)
我想说你可以采取两种方法,但没有很好的方法从模板本身做到这一点。
最简单的方法是在拼写$ dwoo-&gt; get之前创建一个变量,并通过引用分配它,如果您正在使用Dwoo_Data对象:
$globalVar = '';
$data->assignByRef('globalVar', $globalVar);
如果您没有使用Dwoo_Data对象,请改为:
$globalVar = '';
$data['globalVar'] =& $globalVar;
这基本上将变量初始化为引用,因此它将作为对包含模板的引用传递。
然后在部分模板中,我建议分配这样的,因为它更容易,但这取决于你:
{$globalVar .= $element.someVar}
另一种选择是在数据中添加一个新的stdClass()对象,然后就可以像
那样分配东西了。{$globalObj->stuff .= $element.someVar}
由于它是一个对象,它将自动通过引用传递,因此也可以解决您的问题。
所以是的,它是可行的,但是你必须在你进入模板之前“计划”,因为你不能只是从包含的模板中将数据传回父模板。
我希望有帮助, 干杯
答案 1 :(得分:0)
我没有找到任何真正的解决方案 - 只是这个解决方法:
Dwoo允许访问$dwoo.get.variable
或$dwoo.post.variable
等超级全局变量。
我们可以获取数据或设置,所以在_partial.html
我做了类似的事情:
{$dwoo.env.globalVar "$globalVar $element.someVar"}
在base.html
我现在可以通过以下方式访问它:
{$dwoo.env.globalVar}