【发布时间】:2018-09-29 07:49:57
【问题描述】:
为此尝试了 ArrayList 和 ArrayData 的各种组合,但没有成功。谷歌只向我展示了正在转换的非常简单的数组。点赞this
这是我的简化数组:
$locations = [
'Venue' => [
[
'Name' => 'ANZ Events Centre',
]
],
'Hotels' => [
[
'Name' => 'Pullman Hotel',
],
[
'Name' => 'Mercure Hotel',
]
]
]
这就是我想要在我的模板中做的事情:
<% if $Locations %>
<% if $Locations.Venue %>
<% loop $Locations.Venue %>
$Name
<% end_loop %>
<% end_if %>
<% end_if %>
我无法理解 ArrayList 的作用,因为它为我添加到其中的每条记录添加了一个数字键。但这是我试图将其转换为模板可以循环的东西的最后一个化身:
$templateArrayList = ArrayList::create();
foreach($locations as $type => $group) {
$groupArray = [];
foreach($group as $location) {
$groupArray[$type][] = ArrayData::create($location);
}
$groupArrayData = ArrayData::create($groupArray);
$templateArrayList->push($groupArrayData);
}
我这里有什么问题?
【问题讨论】:
-
docs.silverstripe.org/en/4/developer_guides/model/lists 我还会检查locations.length 和venue.length,就好像组数组为空一样,它仍然可能导致true。我会看一下,看看我能不能尽快回答这个问题。
-
让我直截了当地说,您拥有数组(简化数组)并将其转换为模板的 ArrayList。对吗?
-
@DanielTate 是的。在了解了 ArrayData 和 ArrayList 之后,我刚刚找到了解决方案。请参阅下面的答案。
标签: php silverstripe