php - form.post_bind is fired twice -
i added form event symfony form. problem event seems fired twice. when debugging, goes twice method , don't know why.
i have form type uses form type. have videofiletype form adding field of imagetype. both of these forms need process done once form submitted.
imagetype
<?php # src/acme/photobundle/form/type/thumbnailtype.php namespace osc\mediabundle\form\type; use osc\mediabundle\manager\imagemanager; use symfony\component\dependencyinjection\container; use symfony\component\form\abstracttype; use symfony\component\form\extension\core\choicelist\objectchoicelist; use symfony\component\form\formbuilderinterface; use symfony\component\form\formevent; use symfony\component\form\formevents; use symfony\component\httpkernel\exception\unsupportedmediatypehttpexception; use symfony\component\optionsresolver\optionsresolverinterface; class imagetype extends abstracttype { private $imagemanager; public function __construct(imagemanager $imagemanager) { $this->imagemanager = $imagemanager; } public function buildform(formbuilderinterface $builder, array $options) { $builder->add('file', 'file'); $builder->addeventlistener( formevents::post_submit, array($this, 'onpostsetdata') ); } public function getdefaultoptions(array $options) { return array('data_class' => 'osc\mediabundle\entity\image'); } public function setdefaultoptions(optionsresolverinterface $resolver) { $resolver->setdefaults(array( 'data_class' => 'osc\mediabundle\entity\image' )); } public function onpostsetdata(formevent $event) { $image = $event->getdata(); $form = $event->getform(); //we need here update image file new content $image = $this->imagemanager->uploadimage($image); $event->setdata($image); } public function getname() { return 'image'; } }
videofiletype
<?php # src/acme/photobundle/form/type/thumbnailtype.php namespace osc\mediabundle\form\type; use osc\mediabundle\manager\videofilemanager; use symfony\component\dependencyinjection\container; use symfony\component\form\abstracttype; use symfony\component\form\extension\core\choicelist\objectchoicelist; use symfony\component\form\formbuilderinterface; use symfony\component\form\formevent; use symfony\component\form\formevents; class videofiletype extends abstracttype { public $container; public $videopresets = []; public $videofilemanager; public function __construct(videofilemanager $videofilemanager, container $container) { $this->container = $container; $videopresets = $container->getparameter('osc_media.video.presets'); foreach ($videopresets $key => $videopreset) { array_push($this->videopresets, $key); } $this->videofilemanager = $videofilemanager; } public function buildform(formbuilderinterface $builder, array $options) { $builder->add('thumbnail', 'image'); $builder->add('file', 'file'); $builder->add('videopreset', 'choice', array( 'choices' => $this->videopresets, 'multiple' => false, 'required' => true )); $builder->addeventlistener( formevents::post_submit, array($this, 'onpostsetdata') ); $builder->add('save', 'submit'); } public function onpostsetdata(formevent $event) { $videofile = $event->getdata(); $form = $event->getform(); //we upload video file $videofile = $this->videofilemanager->uploadvideofile($videofile); $event->setdata($videofile); } public function getdefaultoptions(array $options) { return array('data_class' => 'osc\mediabundle\entity\videofile'); } public function getname() { return 'video_file'; } }
i don't know why onpostsetdata
method called twice...
Comments
Post a Comment