У меня есть форма, добавив набор полей и набор полей, которые вызывали другого. У меня есть только одно отношение ManyToOne, ссылающееся на идентификатор другого объекта. в моем контроллере у меня есть:Fieldset zf2 - заполнить 2 объекта
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
));
}
Этот контроллер сохраняется только pessoajuridica сущности, Localização не persist..the каскада не проходит не работает 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,
),
);
}}
Итак, мой probrem является: сохраняются pessoajuridica и Localização ..
Можете ли вы убрать свое форматирование кода, свои объяснения и разъяснить, что вы на самом деле просите? Таким образом, очень сложно понять, где может возникнуть проблема или ошибка. – Jeff
Отредактированный Джефф .. если и мог бы мне помочь .. tks :) –