2

我创建了一个带有返回数组的函数的 EE 插件。例如

function things(){
    return array(
        array(
            'name'=>'bob',
            'age'=>40
        ),
        array(
            'name'=>'mary',
            'age'=>50
        )
    );
}

我找不到任何方法来循环使用 vanilla EE 模板标签来遍历这个数组。插件只能返回字符串吗?这真的不可能还是我忽略了一些简单的事情?我想做类似的事情:

{foreach {things} }
    Name: {name}
    Age: {age}
{/foreach}
4

2 回答 2

3

您的数组结构正确,但您需要使用模板类的解析变量方法。这种方法的好处在于,如果您愿意,它可以让您嵌套很多层(允许标签对内的标签对内的标签对),并且您还可以{count}自动获取{total_results}

所以在你的插件中:

function things()
{
    $things = array(
        array(
            'name'=>'bob',
            'age'=> '40'
        ),
        array(
            'name'=>'mary',
            'age'=> '50'
        )
    );
    return $this->EE->TMPL->parse_variables($this->EE->TMPL->tagdata, $things);
}

然后在您的模板中:

{exp:my_plugin:things}
    Name: {name}
    Age: {age}
{/exp:my_plugin:things}
于 2012-06-29T17:03:31.953 回答
0

为 EE3 修改的先前答案的附加信息:

在模板中(相同):

{exp:addon_name:method_name}

   Name: {name}
   Age: {age}

{/exp:addon_name:method_name}

在插件插件中需要使用 ee()->TMPL:

$things = array(
        array(
            'name'=>'bob',
            'age'=> '40'
        ),
        array(
            'name'=>'mary',
            'age'=> '50'
        )
    );

    return ee()->TMPL->parse_variables(ee()->TMPL->tagdata, $things);
于 2016-06-21T15:51:48.497 回答