SilverStripe 3 – Опции для <% loop%>

Есть ли список всех параметров, которые я могу добавить в цикл?

Я не знаю, правильно ли это имя. Я имею в виду эти

<% loop Dataobject.Reverse %> <% loop Dataobject.Limit() %> 

Может ли кто-нибудь рассказать мне все, что здесь возможно? И какое правильное название для него?

Related of "SilverStripe 3 – Опции для <% loop%>"

в вашем вопросе есть ошибка, это <% loop $DataList.xxx %> или <% loop $ArrayList.xxx %> (см., вы зацикливаете список DataObjects)

ну, loop – это просто цикл foreach

так, например:

 <% loop $DataList.Reverse %>$Title<% end_loop %> 

является таким же, как:

 <?php foreach($dataList->reverse() as $item) { echo $item->Title; } 

«kindof» то же самое, потому что на самом деле шаблон выполняет некоторую проверку и кастинг для вас (например, он не бросает и не ошибочно, если Title не задан), и цикл может обрабатывать только списки SilverStripe, а не массивы


ТЛ; др; / вывод

loop имеет никаких параметров
варианты, о которых вы говорите, являются методами, которые существуют в списке, который вы хотите использовать. 2 перечисляет классы php, которые вы обычно выполняете:

  • DataList api docs для класса DataList
  • ArrayList api docs для класса ArrayList

см. список методов в документах API для того, какие методы доступны.

очевидно, не все методы предназначены для использования в цикле,
DataList только те, которые возвращают DataList или ArrayList .
вы можете увидеть, что они возвращают из первого столбца таблицы.

например:

 public ArrayList limit( integer $length, integer $offset = 0 ) 

означает:

  • он является общедоступным (поэтому его доступные, частные или защищенные не будут доступны в шаблоне)
  • он возвращает ArrayList
  • имя limit
  • параметрами являются длина номера и смещение числа

так что вы можете сделать: <% loop $List.limit(10,5) %>


дальнейшее чтение:

некоторые методы в этом списке не отображают параметры, но на самом деле имеют их, это потому, что они являются динамическими, и документы API не отображают это.

пример:

 public ArrayList filter( ) 

можно использовать как это (я думаю, никогда не пробовал):

 <% loop $List.filter('Name', 'Zauberfisch') %> 

вы также можете добавить свои собственные методы, создав Extension и добавив это расширение в DataList и ArrayList