php - Fieldset zf2 - populate 2 entities -
i have form adding fieldset , fieldset calling another. have 1 manytoone relationship referencing id of entity. in controler have:
public function juridicaaction() { if (!$this->zfcuserauthentication()->hasidentity()) { return $this->redirect()->toroute('login'); } $objectmanager = $this->getservicelocator()->get('doctrine\orm\entitymanager'); $em = $this->getentitymanager(); $pessoajuridica = new pessoajuridica(); $localizacao = new localizacao(); $form = new pjform($objectmanager); $form->bind($pessoajuridica); $request = $this->getrequest(); if ($request->ispost()) { $data = array_merge_recursive( $this->getrequest()->getpost()->toarray(), $this->getrequest()->getfiles()->toarray() ); $form->setdata($data); //var_dump($data);die(); $pessoajuridica->setidpessoa($em->find("cadastro\entity\pessoa", $this->zfcuserauthentication()->getidentity()->getidpessoa())); if ($form->isvalid()) { $objectmanager->persist($pessoajuridica); $objectmanager->flush(); $this->flashmessenger()->addsuccessmessage('cadastro efetuado!'); return $this->redirect()->toroute('fornecedor', array('action'=>'dadosbancarios')); } //else var_dump($form->getmessages());die(); } return new viewmodel(array( 'pessoajuridica' => $pessoajuridica, 'form' => $form )); }
this controller persist pessoajuridica entity, localizacao not persist..the cascade persist not work myform:
class pjform extends form{ public function __construct(objectmanager $objectmanager) { parent::__construct('pjform'); $this->setattribute('method', 'post'); $this->sethydrator(new doctrinehydrator($objectmanager)); $pessoajuridicafieldset = new pessoajuridicafieldset($objectmanager); $pessoajuridicafieldset->setname('pessoajuridica'); $pessoajuridicafieldset->setuseasbasefieldset(true); $this->add($pessoajuridicafieldset); $this->add(array( 'name' => 'submit', 'attributes' => array( 'type' => 'submit', 'value' => 'continuar', 'class' => 'btn btn-block btn-success', 'id' => 'submitbutton', ), )); }
fieldset pessoajuridicafieldset:
class pessoajuridicafieldset extends fieldset implements inputfilterproviderinterface { public function __construct(objectmanager $objectmanager) { parent::__construct('pessoajuridica'); $this->sethydrator(new doctrinehydrator($objectmanager)) ->setobject(new pessoajuridica()); $this->add(array( 'type' => 'zend\form\element\hidden', 'name' => 'id' )); $cnpj = new text('cnpj'); $cnpj->setlabel('cnpj') ->setattributes(array( 'class' => 'form-control', 'id' =>'cnpj', )); $this->add($cnpj); $nomefantasia = new text('nomefantasia'); $nomefantasia->setlabel('nome fantasia') ->setattributes(array( 'class' => 'form-control', 'id' =>'nomefantasia', )); $this->add($nomefantasia); $logotipo = new file('logotipo'); $logotipo->setlabel('logotipo') ->setattributes(array( 'class' => 'form-control', 'id' =>'logotipo', )); $this->add($logotipo); $localizacao = new localizacaofieldset($objectmanager); $localizacao->setname('localizacao'); $localizacao->setuseasbasefieldset(true); $this->add($localizacao); } public function getinputfilterspecification() { return array( 'cnpj' => array( 'required' => true ), 'nomefantasia' => array( 'required' => true ), ); }}
fielset localizacao:
class localizacaofieldset extends fieldset implements inputfilterproviderinterface{ public function __construct(objectmanager $objectmanager) { parent::__construct('localizacao'); $this->sethydrator(new doctrinehydrator($objectmanager)) ->setobject(new localizacao()); $cep = new text('cep'); $cep->setlabel('cep') ->setattributes(array( 'class' => 'form-control', 'id' =>'cep', )); $this->add($cep); $logradouro = new text('logradouro'); $logradouro->setlabel('logradouro') ->setattributes(array( 'class' => 'form-control', 'id' =>'logradouro', )); $this->add($logradouro); $numero = new text('numero'); $numero->setlabel('nĂºmero'); $numero->setattributes(array( 'class' => 'form-control', 'id' =>'numero' )); $this->add($numero); $bairro = new text('bairro'); $bairro->setlabel('bairro'); $bairro->setattributes(array( 'class' => 'form-control', 'id' =>'bairro' )); $this->add($bairro); $complemento = new text('complemento'); $complemento->setlabel('complemento'); $complemento->setattributes(array( 'class' => 'form-control', 'id' =>'complemento' )); $this->add($complemento); $referencia = new text('referencia'); $referencia->setlabel('referencia'); $referencia->setattributes(array( 'class' => 'form-control', 'id' =>'referencia' )); $this->add($referencia); $cidade = new text('cidade'); $cidade->setlabel('cidade'); $cidade->setattributes(array( 'class' => 'form-control', 'id' =>'cidade' )); $this->add($cidade); $this->add(array( 'name' => 'iduf', 'type' => 'doctrinemodule\form\element\objectselect', 'options' => array( 'label' => 'estado', 'object_manager' => $objectmanager, 'target_class' => 'cadastro\entity\uf', 'property' => 'uf' ), 'attributes' => array( 'required' => true, 'class' => 'form-control' ) )); } public function getinputfilterspecification() { return array( 'cep' => array( 'required' => true, ), 'logradouro' => array( 'required' => true, ), 'numero' => array( 'required'=> true, ), 'bairro' => array( 'required' => true, ), 'cidade' => array( 'required' => true, ), 'iduf' => array( 'required'=> true, ), ); }}
so, probrem : persist pessoajuridica , localizacao..
i did manually , work..but if has other automatically, can post. thank you.
... $localizacao->setbairro($form->get('pessoajuridica')->get('localizacao')->get('bairro')->getvalue()); $localizacao->setcep($form->get('pessoajuridica')->get('localizacao')->get('cep')->getvalue()); $localizacao->setcidade($form->get('pessoajuridica')->get('localizacao')->get('cidade')->getvalue()); $localizacao->setcomplemento($form->get('pessoajuridica')->get('localizacao')->get('complemento')->getvalue()); $localizacao->setiduf($em->find("cadastro\entity\uf", $form->get('pessoajuridica')->get('localizacao')->get('iduf')->getvalue())); $localizacao->setlogradouro($form->get('pessoajuridica')->get('localizacao')->get('logradouro')->getvalue()); $localizacao->setnumero($form->get('pessoajuridica')->get('localizacao')->get('numero')->getvalue()); $localizacao->setreferencia($form->get('pessoajuridica')->get('localizacao')->get('referencia')->getvalue()); //var_dump($localizacao);die(); $pessoajuridica->setidpessoa($em->find("cadastro\entity\pessoa", $this->zfcuserauthentication()->getidentity()->getidpessoa())); if ($form->isvalid()) { $objectmanager->persist($localizacao); $pessoajuridica->setidlocalizacaocomercial($localizacao); $objectmanager->persist($pessoajuridica); $objectmanager->flush(); ....
Comments
Post a Comment