Wednesday, 15 April 2015

symfony2 - set form data with session value without submit this symfony form -



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 form

so 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