Фильтр stats позволяет накапливать и выводить некоторую статистическую информацию, например, находить сумму элементов, вычислять средние арифметические, подсчитывать количество и т.д.
Пример:
<list:list> <list:item>{$val|stats:"ttl"} </list:item> </list:list> Total:{$bogus|stats:"ttl","sum"}
Здесь stats фильтр будет накапливать значения переменной val и затем выведет сумму элементов.
В рамках фильтра stats есть понятие контекста - это как бы название экземпляра фильтра. Все упоминания фильтра с указанных контекстом будут применены к одному из экземлятов. В нашем примере мы использовать контекст ttl, который указывается первым параметров фильтра.
Вторым параметром указывается режим работы фильтра. Если режим не указан, тогда значение базы для фильтра будет просто прибавлено к уже накомленному результату.
Фильтр stats реализован как набор одиночек, поэтому многочисленные вызовы этого фильтра для каждого контекста в рамках одного шаблона используют один и тот же экземпляр объекта.
{$var|stats:context_name [,mode]}
Список доступных режимов:
Шаблон stats.html (обратите внимание на режи accq)
<list:list id="List"> <list:item>{val} - {$val|stats:"aq","accq"}</list:item> </list:list><br/> Total:{$bogus|stats:"aq","sum"}';
Поставим некоторые данные в шаблон:
$template = new WactTemplate('stats.html'); $template->setChildDataset('List', array(array('val'=>10),array('val'=>20),array('val'=>30))); $template->display();
Получим:
10- 20- 30- Total: 60
Обсуждение