Silverstripe – Зацикливание по неассоциативному массиву в шаблоне

Как это можно сделать внутри шаблона? Я сделал это с помощью ArrayData, используя ключ в цикле шаблона для доступа к значениям из шаблона, но если у меня есть произвольный массив строк без ключей, какую переменную я могу использовать для доступа к значениям?

Если в моем контроллере у меня это:

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

И это в моем шаблоне:

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

Что я ставлю вместо 1, чтобы заставить шаблон выплюнуть «это тест»?

Вместо того, чтобы создавать новый экземпляр ArrayData каждый раз, вы можете просто использовать $Me . Таким образом, вы бы:

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

И в вашем шаблоне:

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

$Me относится к текущему элементу в цикле. В этом случае это будут строки в массиве.

насколько я знаю, это невозможно, вам нужно обернуть каждый элемент в объект 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 ___() на стероидах