如何在模板内完成此操作?我已经使用 ArrayData 使用模板循环中的键来访问模板中的值,但是如果我有一个没有键的任意字符串数组,我应该使用什么变量来访问这些值?
如果我的控制器中有这个:
public function ArrayList()
{
$ArrayList = new ArrayList(array('this', 'is', 'a', 'test'));
return $ArrayList;
}
我的模板中是这样的:
<% loop $ArrayList %>1<% end_loop %>
我该用什么来代替 1 才能让模板输出“这是一个测试”?
据我所知这是不可能的,您需要将每个项目包装到 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 ___()
您可以只使用
ArrayData
,而不是每次都创建一个新的 $Me
实例。所以你会:
public function ArrayList()
{
$ArrayList = new ArrayList(array('this', 'is', 'a', 'test'));
return $ArrayList;
}
并且,在您的模板中:
<% loop $ArrayList %>$Me<% end_loop %>
$Me
指循环中的当前项目。在本例中,它将是数组中的字符串。
正如 @zauberfisch 所说,这通常适用于应用程序级代码,这就是我正在使用的。我似乎经常出现在这个SO条目上,所以如果没有别的,就供我参考吧!
public function States(){
$ArrayList = ArrayList::create([
['Text' => "NSW"],
['Text' => "Qld"],
['Text' => "Vic"],
['Text' => "WA"],
['Text' => "SA"],
['Text' => "Tas"],
['Text' => "ACT"],
['Text' => "Distance"]
]);
return $ArrayList;
}