Symfony subform attributes not being included in parent -


so i'm having trouble getting attributes subforms. scenario have made work form 'employer' chosen. if user application admin, can pick employers. if user worker works more 1 employer, pick employer in form. otherwise (if have single employer), want render hidden field employer set. additionally, employer subform should handle itself.

my strategy set attributes in employer subform, when add these workform, not come through (specifically, 'value').

does know how can propagate these attributes through?

employertype (the subform)

<?php  namespace agency\work\workbundle\formtype;  use agency\work\workbundle\transformer\employertransformer; use agency\work\workbundle\transformer\snowflaketransformer; use symfony\component\form\abstracttype; use symfony\component\form\formbuilderinterface; use symfony\component\optionsresolver\optionsresolverinterface;  class employertype extends abstracttype {      private $options;     private $usor;     private $single;     private $biller;      // public function __construct($usor) {     //     $this->usor=$usor;     public function __construct( array $options=array() ) {         $this->usor=$options['usor'];         $this->em=$options['em'];         $this->single= ( 1 == $this->usor->getemployer()->count() );     }      public function buildform( formbuilderinterface $builder, array $options ) {          $builder->create( 'employer'             , 'entity'             , array(                 'class'        => 'agency\work\workbundle\entity\employer'                 , 'query_builder' =>                 function ( $repository ) {                     $qb = $repository->createquerybuilder( 'b' )                     ->addorderby( 'b.name' );                     if ( ! $this->usor->isadmin() ) {                         $qb->join( 'b.usor', 'u' )->andwhere( "u=$this->usor" );                     }                     return $qb;                 }             )         )         ;          if ($this->single) {             $builder->setoption('data'                 , $this->single?( $this->usor->getemployer()->first()->getid() ):''                 );             $transformer=new employertransformer( $this->em );             $builder->addmodeltransformer($transformer);         }          var_dump($builder->getoptions());     }      /**      *      *      * @param object  $resolver      */     public function setdefaultoptions( optionsresolverinterface $resolver ) {         $resolver->setdefaults( array(                 'class'        => 'agency\work\workbundle\entity\employer'                 , 'label'      => 'employer'                 , 'label_attr' => array( 'class' => 'txtl' )             ) );     }      public function getparent() {         return $this->single ? 'hidden' : 'entity';     }      /**      *      *      * @return unknown      */     public function getname() {          return 'employer';     }  } 

worktype (the subform)

<?php  namespace agency\work\workbundle\formtype;  use agency\work\workbundle\transformer\employertransformer; use symfony\component\form\abstracttype; use symfony\component\form\formbuilderinterface; use symfony\component\optionsresolver\optionsresolverinterface;  class worktype extends abstracttype {      public function buildform( formbuilderinterface $builder, array $options ) {         $securitycontext = $options['attr']['securitycontext'];         if ( isset( $options['attr']['em'] ) ) { $em = $options['attr']['em'];} else {$em=null;}         $usor    = $securitycontext->gettoken()->getuser();          $builder->add(             $builder->create ( 'employer'                 , new employertype( array( 'usor' => $usor, 'em'=>$em ) )             )             )             ;           $builder         ->add( 'workdate'             , null             , array(                 'label'      => 'end'                 , 'label_attr' => array( 'class' => 'txtl' )                 , 'attr'       => array( 'class' => 'dateend' )             )         );      }       /**      *      *      * @param object  $resolver      */     public function setdefaultoptions( optionsresolverinterface $resolver ) {         $resolver->setdefaults( array(                 'data_class' => 'agency\work\workbundle\entity\consent'             ) );     }       /**      *      *      * @return unknown      */     public function getname() {         return 'jobtype';     }   } 

very interesting code formating, difficult read it. @ first glance seems error here

'query_builder' =>                 function ( $repository ) {                     $qb = $repository->createquerybuilder( 'b' )                     ->addorderby( 'b.name' );                     if ( ! $this->usor->isadmin() ) {                         $qb->join( 'b.usor', 'u' )->andwhere( "u=$this->usor" );                     }                     return $qb;                 } 

you use closure callback function, need use use keyword provided context closure.

'query_builder' => function ( $repository ) use ($usor) {     $qb = $repository         ->createquerybuilder( 'b' )         ->addorderby( 'b.name' );     if ( ! $usor->isadmin() ) {         $qb->andwhere('b.usor = :u')->setparameter('u', $usor);     }     return $qb; } 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -