2016-10-02 1 views
0

У меня есть объект Account, который содержит отношения «один ко многим» с членами новостной ленты. В Twig хотите показать количество участников. Я знаю, что могу показать количество по следующему коду:Can Twig подсчитывает длину массива с параметром фильтра

{{ account.mailList|length }} 

Только mailList содержит также неактивные элементы. С этими членами их активное поле является ложным. Есть ли способ отфильтровать их? Этот способ замедляет работу приложения?

+1

Вы можете написать свой собственный фильтр ветви для этого: http://symfony.com/doc/current/templating/twig_extension.html – Cerad

ответ

0

Вы можете использовать цикл в веточке:

{% set activeMailCount = 0 %} 
{% for mail in account.mailList if account.mailList.active %} 
    {% set activeMailCount = activeMailCount + 1 %} 
{% endfor %} 
2

Вы можете создать метод на субъекта счета, который возвращает активные члены

// src/AppBundle/Entity/Account.php 
public function getActive() 
{ 
    $count = 0; 

    foreach($this->getMailList() as item) { 
     if (item->isActive()) { // Assuming the newsbrief members are entities 
      $count++   // with an $active property & isser(). 
     } 
    } 

    return $count; 
} 

и называют, что из Twig:

{{ account.getActive() }} # or {{ account.active }}