php - Symfony2 Form ChoiceType External Datasource -
i have form class several choicetype fields contain array of options key:value pair. when form submitted value saved. when i'm rendering object show key value instead.
example: 'monthly' => '1month'. 1month stored, prefer output monthly.
i'm trying avoid conditionals check value , changing output key value.
i wasn't able find documentation best practices sort of thing. i'm thinking creating service stores choice options arrays , build twig filter changing rendered output based on array service.
am on right track or there easier way?
i tried service solution , got working. i'm not sure if elegant or efficient way did job. form form class type , injected service contained choice arrays.
i created choices.php class file inside form folder next formtype file. acts service returns choices formtype , custom twig extension filter created. formtype had set service in order inject choices service.
/*choices.php*/ public function getchoices($choice) {     $choices = array('paymentfrequency' => array('monthly' => '1month',                                                  'bi-weekly' => '2weeks'),                      'compounding' => array('monthly' => 'monthly',                                             'daily' => 'daily')     );      return $choices[$choice]; }  /*formtype.php*/ ->add('paymentfrequency', choicetype::class, array(             'label' => 'payment frequency:',             'choices' => $this->choicesservice->getchoices('paymentfrequency'),  )) ->add('compounding', choicetype::class, array(             'label' => 'compounding:',             'choices' => $this->choicesservice->getchoices('compounding'),  )) i created custom twig filter function choices service injected it.
/*twigextension.php*/ public function renderchoicesfilter($value, $type) {      $choices = $this->choicesservice->getchoices($type);      return array_search($value, $choices); }  /*twig template*/ {{ object.paymentfrequency|renderchoices('paymentfrequency') }} 
Comments
Post a Comment