【问题标题】:Reassign parent variable in included Dwoo template在包含的 Dwoo 模板中重新分配父变量
【发布时间】:2010-01-05 11:27:52
【问题描述】:

我有一个 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'}

我想得到什么?在每个部分文件中,我想修改一些我想在{foreach} 之后使用的$globalVar

这里有一件很重要的事情——我不想在base.html 中做部分的{assign}!仅限_partial.html

是否可以通过引用将$globalvar 传递给_partial.html,以便部分文件会修改此变量?

【问题讨论】:

    标签: php templates reference dwoo


    【解决方案1】:

    我会说您可以采用两种方法,但从模板本身并没有真正好的方法。

    最简单的方法是在调用 $dwoo->get 之前创建一个变量,并通过引用分配它,如果您使用的是 Dwoo_Data 对象,您只需这样做:

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

    如果您没有使用 Dwoo_Data 对象,请改为:

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

    这基本上将变量初始化为引用,因此它将作为对包含模板的引用传递。

    然后在部分模板中我建议这样分配,因为它更容易,但这取决于你:

    {$globalVar .= $element.someVar}
    

    另一种选择是在你的数据中加入一个新的 stdClass() 对象,然后你可以像

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

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

    是的,这是可行的,但您必须在进入模板之前“计划”,因为您不能只将数据从包含的模板传递回父模板。

    希望对你有帮助 干杯

    【讨论】:

      【解决方案2】:

      我没有找到任何真正的解决方案 - 只是这个解决方法:

      Dwoo 允许使用 $dwoo.get.variable$dwoo.post.variable 等访问超全局变量。

      我们可以获取数据也可以设置,所以在_partial.html 我做了类似的事情:

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

      base.html 我现在可以通过以下方式访问它:

      {$dwoo.env.globalVar}
      

      【讨论】:

        猜你喜欢
        • 2011-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-21
        • 1970-01-01
        • 2013-04-05
        • 2014-12-19
        • 1970-01-01
        相关资源
        最近更新 更多