symfony - how to call function of entity repository in form type in symfony2 -
i want call function in form type class. function generate array , written in entity repository class. using array generate dynamic form field. here entity repository class function.
public static $rolenamemap = array( self::role_super_admin => 'superadmin', self::role_managemen => 'management', self::role_managers => 'manager', self::role_it_staff => 'itstaff', self::role_cs_customer => 'cscustomer', self::role_cs => 'cs', self::role_dealer => 'dealer', self::role_account_staff => 'accountstaff', self::role_broker_user => 'staff', ); public function getgrouplistarray() { $qb = $this->createquerybuilder('g') ->orderby('g.hierarchy','asc'); $query = $qb->getquery(); $grouplist = $query->execute(); $rolenamemap = array(); foreach ($grouplist $role){ $rolenamemap[$role->getid()] = $role->getrole(); } return $rolenamemap; }
below form builder class want call above entity repository function.
public function buildform(formbuilderinterface $builder, array $options) { $builder->add('routeid', 'hidden'); foreach (grouplistrepository::$rolenamemap $key=>$value){ $builder->add($value, 'checkbox',array('label' => '', 'required' => false,)); } }
i able static variable show in above code but, have confusion how should access repository function in form builder class in symfony2.
thanks in advance.
it's not available in form builder, , it's not necessary. it's not how symfony forms work. looks you're wanting do, try this. create list of checkboxes corresponding list of roles.
$builder->add( 'roles', 'entity', array( 'class' => 'acme\defaultbundle\entity\group', 'expanded' => true, 'multiple' => true, 'property' => 'role', // or use __tostring() 'query_builder' => function ($repository) { return $repository->createquerybuilder('g') ->orderby('g.hierarchy', 'asc'); } ) );
see http://symfony.com/doc/master/reference/forms/types/entity.html.
if need repository in form builder, create form type service , inject entity manager dic. or pass directly form type when create it.
Comments
Post a Comment