2016-11-15 2 views
1

symfony 2.8Iterate oder zählen Arraycollection von Zweig

Ok, ich habe eine Kategorie Einheit, die wie folgt aussieht:

class Category 
{ 

    // ... // 
    /** 
    * @ORM\OneToMany(targetEntity="Classified", mappedBy="category") 
    */ 
    private $classified; 

    // ... // 

    public function __construct() 
    { 
     $this->classified = new ArrayCollection(); 
    } 

} 

und der Classified Einheit sieht wie folgt aus: Klasse

Klassifiziert
{ 
    /** 
    * @ORM\ManyToOne(targetEntity="Category", inversedBy="classified") 
    */ 
    private $category; 
} 

In meiner result.html.twig habe ich aufgerufen, den Controller wie folgt zu rendern:

{{ render(controller('ClassifiedBundle:Category:displayCategoryPanelList'))}} 

die im Grunde Kategorie-Controller ruft

class CategoryController extends Controller 
{ 
    public function displayCategoryPanelListAction(Request $request) 
    { 

     $em = $this->getDoctrine()->getManager(); 
     $categories = $em->getRepository('ClassifiedBundle:Category') 
        ->findAllOrderedByName(); 


     return $this->render('ClassifiedBundle:Front/Widgets:category-panel-list.html.twig', 
      array(
       'categories' => $categories 
      )); 
    } 
} 

was wiederum die CategoryRepository für Abfrage ruft:

class CategoryRepository extends EntityRepository 
{ 
    public function findAllOrderedByName() 
    { 

     $query = $this->createQueryBuilder('c') 
      ->select('c, cc') 
      ->leftJoin('c.classified', 'cc') 
      ->orderBy('c.name', 'ASC') 
      ->getQuery() 
      ->getResult(); 

     return $query; 
    } 
} 

die am Ende zur Kategorie-Panel-list.html.twig wiedergegeben wird:

<ul> 
    {% for c in categories %} 
    <li> 
     <a href="#"> 
     <i class="fa {{ c.icon }}"></i> 
     {{ c.name }} <span class="category-counter">{# COUNT SHOULD GO HERE#}</span> 
     </a> 
    </li> 
    {% endfor %} 

</ul> 

Nun, alle diese arbeiten gut, abgesehen von der Zählung klassifiziert Arraycollection Teil. Ich habe versucht, {{ c.classified|length }}, aber das gibt einen schwerwiegenden Fehler.

Die Dump sieht gut aus und ich kann den Eintrag für die klassifizierte Sammlung sehen, aber ich weiß einfach nicht, wie ich sie zählen soll. Einige Kategorien haben eine leere klassifizierte Sammlung. enter image description here

+0

"Ich habe versucht, {{c.classified | Länge}} aber das gibt einen fatalen Fehler." - Was ist der fatale Fehler? – Malcolm

Antwort

0

Sie könnten nur versuchen, die Lehre Methode

{{ c.classified.count }} 
0

{{ c.classified|length }} auf ein Array angewendet wird.

Ihr Objekt c.classified ist ein PersistCollection, kein Array.

Sie {{ c.classified.count }} verwenden sollten