Silverstripe - 在模板中循环非关联数组

时间:2013-07-29 10:27:10

标签: php silverstripe

如何在模板内完成?我使用模板循环中的键来使用ArrayData完成它以访问模板中的值,但是如果我有一个没有键的任意字符串数组,我使用什么变量来访问这些值?

如果在我的控制器中我有这个:

public function ArrayList()
{
    $ArrayList = new ArrayList(array('this', 'is', 'a', 'test'));
    return $ArrayList;
}

这在我的模板中:

<% loop $ArrayList %>1<% end_loop %>

我应该用什么代替1来让模板吐出“这是一个测试”?

2 个答案:

答案 0 :(得分:14)

据我所知这是不可能的,你需要将每个项目包装成一个ArrayData对象

public function ArrayList()
{
    $ArrayList = ArrayList::create(array(
        ArrayData::create(array('Text' => 'this')),
        ArrayData::create(array('Text' => 'is')),
        ArrayData::create(array('Text' => 'a')),
        ArrayData::create(array('Text' => 'test')),
    ));
    return $ArrayList;
}

和模板:

<% loop $ArrayList %>$Text<% end_loop %>

//注意:___::create()是类固醇的new ___()

答案 1 :(得分:7)

您可以只使用ArrayData,而不是每次都创建一个新的$Me实例。所以你会:

public function ArrayList()
{
    $ArrayList = new ArrayList(array('this', 'is', 'a', 'test'));
    return $ArrayList;
}

并且,在您的模板中:

<% loop $ArrayList %>$Me<% end_loop %>

$Me指循环中的当前项。在这种情况下,它将成为数组中的字符串。