php - How to know how many items a choice field has inside the controller - Symfony2 -


i want count choice's items after form has been created. field simple symfony's choice field query_builder create items. how can achieve this?

<?php  class mycontroller {     public function indexaction()     {         $form = $this->createform(new myformwithchoicefieldtype());          // suppose field named "countries"         $items = count(???);     } } 

thanks in advance.

here's how categories.

notice have categoryrepository. can use methods repository inside query_builder options in formtype classes , in controller.

my findallcategories() method returns query builder object, therefore can have method in repository called countcategories() returns scalar count of same query builder object.

this allows me access count method in controller , makes sure couting consistent query builder using find categories.

this simple example becomes more useful if have more complex finder methods joins , clauses.

in controller:

<?php  use site\frontendbundle\form\type\categorytype;  public function indexaction() {     $em = $this->getdoctrine()->getmanager();     $repo = $em->getrepository('sitefrontendbundle:category');      $form = $this->createform(new categorytype());      $count = $repo->countallcategories();      return $this->render('sitefrontendbundle:category:count.html.twig', array(         'form' => $form->createview(),         'count' => $count     )); } 

in form type:

<?php  namespace site\frontendbundle\form\type;  use symfony\component\form\abstracttype; use symfony\component\form\formbuilderinterface; use symfony\component\optionsresolver\optionsresolverinterface;  use site\frontendbundle\repository\categoryrepository;  class categorytype extends abstracttype {     public function buildform(formbuilderinterface $builder, array $options)     {         $builder             ->add('category', 'entity', array(                 'class' => 'sitefrontendbundle:category',                 'property' => 'title',                 'query_builder' => function(categoryrepository $cr) {                     return $cr->findallcategories();                 }             ))         ;     }      public function setdefaultoptions(optionsresolverinterface $resolver)     {         $resolver->setdefaults(array(             'data_class' => 'site\frontendbundle\entity\category'         ));     }      public function getname()     {         return 'category_type';     } } 

and in category repository:

<?php  namespace site\frontendbundle\repository;  use doctrine\orm\entityrepository;  class categoryrepository extends entityrepository {     public function findallcategories()     {         return $this->createquerybuilder('c')             ->orderby('c.lft', 'asc')         ;     }      public function countallcategories()     {         return $this             ->findallcategories()             ->select('count(c.id)')             ->getquery()             ->getsinglescalarresult()         ;     } } 

if have questions let me know.


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -