【问题标题】:Dynamic Variables in Velocity速度中的动态变量
【发布时间】:2013-06-17 09:55:33
【问题描述】:

我在这里查看了一些答案,但我完全无法得到我想要的东西,所以如果我根据我的情况来问它:

首先,让我说我是 Velocity 的非常新手,但我非常精通 PHP。我知道我们在这里将苹果与橙子进行比较,但请耐心等待 - 只是通过示例。

想象一下:我有一些来自数据库的新对象数组中的数据。每条记录中都有一个唯一标识符。我想将此唯一标识符用作对象中的变量名。

在 PHP 中,这很简单:

<?php

    $goalObject = new stdObject();

    foreach ($row as $data)
    {
        $identifier = $data->unique_id;            

        $goalObject->$$identifier = new stdObject();

        $goalObject->$$identifier->name = $data->name;
        $goalObject->$$identifier->total = $data->num_apples + $data->num_oranges;
    }

注意identifier ($$) 的双重印记。

现在,值得注意的是,unique_id 确实以字母开头,所以它应该适合用作变量名。一个示例 unique_id 将类似于 AAA0000 或类似的东西。没有空格,没有连字符,没有任何标点符号。

所以,我的目标对象是$goalObject-&gt;AAA0000-&gt;name$goalObject-&gt;AAA0000-&gt;total。 (或 $goalObject.AAA0000.name$goalObject.AAA0000.total 在 Velocity 中。)

如果我能做这样的事情,我会很高兴。但据我所知,Velocity 不允许有这么酷的东西。

请有人帮帮我。

提前感谢您对我的任何回答。

【问题讨论】:

标签: velocity dynamic-variables


【解决方案1】:

这并不完全是我想要的,但我设法使用地图使其工作。我想我只是没有完全理解其他答案在说什么。通常情况下,我会删除此帖子并假装它从未发生过,但可能会有人遇到类似问题。

为了让$goalObject.AAA0000.name 工作,我必须创建一个地图。

#set($goalObject = {})

#foreach ($data in $row)
    #set($identifier = $data.unique_id)

    #set($name = $data.name)
    #set($total = $data.num_apples + $data.num_oranges)

    #set($dummy = $goalObject.put({
        'name'  : $name,
        'total' : $total
    }))
#end

到目前为止,这对我有用,但我必须使用$goalObject.get("AAA0000").name,而不是输入$goalObject.AAA0000.name。我很高兴它正在工作。

【讨论】:

  • $goalObject.AAA0000.name 应该适合您...您不必显式使用 .get() 来检索地图值
猜你喜欢
  • 2013-03-02
  • 1970-01-01
  • 2018-03-31
  • 2021-10-03
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多