symfony2 - set form data with session value without submit this symfony form -
hi symfonistes,
i utilize symfony's form in web page search info , when info validated utilize table pagination scheme viewing in same webpage form is.
my webpage runs correctly search engine , pagination scheme table 1 thing not run. when click button scheme pagination (sort, page number or number of viewing per page) request send controller , @ moment lost info selection form.
the result of scheme pagination , relative previous search info form disappear. way user can utilize webpage doesn't parameters result.
i utilize session rebuild form info defined previously. @ moment utilize preferred_choices in form class (not run) if have solving welcome.
or can tell me why form preferred_choices not run ?
thank lot support
my form class :
class cqsprosansmarquetype extends abstracttype { public function buildform(formbuilderinterface $builder, array $options) { $defaultcqssearch = new cqsprosansmarque(); ladybug_dump($options['attr']); $defaultcqssearch->setraylibelle((!array_key_exists('ray_libelle', $options['attr'])) ? null : $options['attr']['ray_libelle']); $defaultcqssearch->setfamlibelle((!array_key_exists('fam_libelle', $options['attr'])) ? null : $options['attr']['fam_libelle']); $defaultcqssearch->setcaelibelle((!array_key_exists('cae_libelle', $options['attr'])) ? null : $options['attr']['cae_libelle']); ladybug_dump($defaultcqssearch); $builder ->add('ray_libelle', 'entity', array( 'class' => 'applicationdrivebundle:cqsprosansmarque', 'property' => 'ray_libelle', 'query_builder' => function(cqsprosansmarquerepository $er){ homecoming $er->createquerybuilder('a') ->select('a') ->groupby('a.ray_libelle'); }, 'preferred_choices' => array($defaultcqssearch), 'label' => 'rayon', 'required' => false, )) ->add('fam_libelle', 'entity', array( 'class' => 'applicationdrivebundle:cqsprosansmarque', 'property' => 'fam_libelle', 'query_builder' => function(cqsprosansmarquerepository $er){ homecoming $er->createquerybuilder('a') ->select('a') ->groupby('a.fam_libelle'); }, 'label' => 'famille', 'required' => false, )) ; } public function setdefaultoptions(optionsresolverinterface $resolver) { $resolver->setdefaults(array( 'data_class' => 'application\drivebundle\entity\cqsprosansmarque', )); } public function getname() { homecoming 'cqsprosansmarque'; } }
my controller construct's form :
$searchform2 = $this->createform(new cqsprosansmarquetype(), $cqsprosansmarque, array( 'action' => $this->generateurl('qualitypage_prosansmarque_search', array('maxitemsperpage' => $maxitemsperpage)), 'method' => 'post', 'attr' => array('ray_libelle' => $cqsprosansmarque->getraylibelle()), )); i tested $defaultcqssearch variable. seems setted.
there more 1 selection want:
1) submitting info stored in session
you can submit info form in 2 ways:
using handlerequest, in case pass entire request using submit, in case pass straight fields formso maintain form fields under session should check if form submitted, , if not, submit info (cloned request) stored in session, can done on form class, maybe in controller. here link explain how utilize submit method.
2) using event form::pre_set_data
you can define eventlistener or subscriber modify data(maybe entity) of form based on session. in case need inject session(and request) in form class or in eventsubscriber selection more decoupled compared first(and can reused eventsubscriber) more hard. here how utilize eventlistener or eventsubscriber create form dynamic
3) storing submitted form info class in session
and using create new form (as sec parameter of createform)
the approach used 3rd there problems related deserialization of object in session (in case related entities detached doctrine), reason suggest seek first or sec selection still valid.
forms symfony2 session
No comments:
Post a Comment