Как это можно сделать внутри шаблона? Я сделал это с помощью 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 ___()
на стероидах