AT
Form instanciado dentro de um notebook - TForm::sendata
Bom dia...pessoal
Quem pode me ajudar? tenho um form pai que instancia outro form, todas as funções funcionam menos a carga dos dados no form filho segue os fontes...desde ja agradeço muito...
trecho do form pai...
$form_pessoais = new PessoaisForm;
$hbox = new THBox;
$hbox->style = 'width: 100%';
$hbox->add($form_pessoais);
//$hbox->add($imagem);
$pessoais->add($hbox);
form instaciado
Quem pode me ajudar? tenho um form pai que instancia outro form, todas as funções funcionam menos a carga dos dados no form filho segue os fontes...desde ja agradeço muito...
trecho do form pai...
$form_pessoais = new PessoaisForm;
$hbox = new THBox;
$hbox->style = 'width: 100%';
$hbox->add($form_pessoais);
//$hbox->add($imagem);
$pessoais->add($hbox);
form instaciado
- <?php
- /**
- * CustomerFormView
- *
- * @version 1.0
- * @package setcia
- * @author Antonio Augusto Tavares
- * @copyright Copyright (c) 2018 Setsoft - Consultoria e Informática Ltda
- */
- class PessoaisForm extends TPage
- {
- private $form; // form
- /**
- * Class constructor
- * Creates the page and the registration form
- */
- function __construct()
- {
- parent::__construct();
- // creates the form
- $this->form = new BootstrapFormBuilder('form_pessoais');
- $this->form->style = 'width: 100%';
- $this->form->setFieldSizes('100%');
- $id = new TEntry('id');
- $id->setEditable(false);
- $tratamentos_id = new TDBCombo('tratamentos_id', 'setcis', 'tratamentos', 'id', 'singular');
- $nascimento = new TDate('nascimento');
- $civis_id = new TDBCombo('civis_id', 'setcis', 'civis', 'id', 'descricao', 'descricao asc');
- $sexos_id = new TDBCombo('sexos_id', 'setcis', 'sexos', 'id', 'descricao');
- $pai = new TEntry('pai');
- $mae = new TEntry('mae');
- $municipios_id = new TDBUniqueSearch('municipios_id', 'setcis', 'municipio', 'id', 'nome', 'nome asc');
- $profissoes_id = new TDBUniqueSearch('profissoes_id', 'setcis', 'profissoes', 'id', 'descricao', 'descricao asc');
- $instrucoes_id = new TDBCombo('instrucoes_id', 'setcis', 'instrucoes', 'id', 'descricao');
- $entidades_id = new TEntry('entidades_id');
- $row = $this->form->addFields([ new TLabel('id') ],
- [ new TLabel('Tratamento') ],
- [ new TLabel('Nascimento') ],
- [ new TLabel('Civil') ],
- [ new TLabel('Sexo') ]);
- $row->layout = ['col-sm-1','col-sm-3', 'col-sm-4', 'col-sm-2', 'col-sm-2' ];
- $row = $this->form->addFields([ $id ],
- [ $tratamentos_id ],
- [ $nascimento ],
- [ $civis_id ],
- [ $sexos_id ]);
- $row->layout = ['col-sm-1','col-sm-3', 'col-sm-4', 'col-sm-2', 'col-sm-2' ];
- $row = $this->form->addFields([ new TLabel('Pai') ],
- [ new TLabel('Mãe') ]);
- $row->layout = ['col-sm-6', 'col-sm-6'];
- $row = $this->form->addFields([ $pai ],
- [ $mae ]);
- $row->layout = ['col-sm-6', 'col-sm-6'];
- $row = $this->form->addFields([ new TLabel('Naturalidade') ],
- [ new TLabel('Profissão') ],
- [ new TLabel('Instrução') ],
- [ new TLabel('Entidade') ] );
- $row->layout = ['col-sm-4', 'col-sm-4', 'col-sm-3', 'col-sm-1'];
- $row = $this->form->addFields([ $municipios_id ],
- [ $profissoes_id ],
- [ $instrucoes_id ],
- [ $entidades_id ]);
- $row->layout = ['col-sm-4', 'col-sm-4', 'col-sm-3', 'col-sm-1'];
- $this->form->addAction( 'Editar', new TAction([$this, 'onEdit']), 'fa:save green' );
- $this->form->addAction( 'Salvar', new TAction([$this, 'onSave']), 'fa:save green' );
- //$this->form->addAction( 'Excluir', new TAction([$this, 'onDelete']), 'fa:eraser red' );
- parent::add($this->form);
- }
- public static function onEdit($param)
- {
- try
- {
- TTransaction::open('setcis');
- $id_entidade = TSession::getValue('id_entidade');
- $criteria = new TCriteria;
- $criteria->add(new TFilter('entidade_id', '=', $id_entidade));
- $repository = new TRepository('EntidadePessoal');
- $entidade_pessoal = $repository->load($criteria);
- $objeto_pessoal = new stdClass;
- $objeto_pessoal = $entidade_pessoal;
- TTransaction::close(); // close the transaction
- //var_dump($objeto_pessoal);
- TForm::sendData('form_pessoais', $objeto_pessoal);
- //$this->form->setData($objeto_pessoal); // fill form data
- //new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- public function onSave($param)
- {
- try
- {
- TTransaction::open('setcis');
- $data = $this->form->getData(); // get form data as array
- $data->entidades_id = TSession::getValue('id_entidade');
- if( empty($param['id']))
- {
- $entidade_pessoal = new EntidadePessoal;
- }
- else
- {
- $entidade_pessoal = new EntidadePessoal((int) $param['id']);
- }
- $entidade_pessoal->fromArray( (array) $data); // load the object with data
- $entidade_pessoal->store(); // save the object
- // get the generated id
- $data->id = $entidade_pessoal->id;
- $this->form->setData($data); // fill form data
- //$entidade_pessoal->tratamentos_id = $data->tratamentos_id;
- //$entidade_pessoal->nascimento = $data->nascimento;
- //$entidade_pessoal->civis_id = $data->civis_id;
- //$entidade_pessoal->sexos_id = $data->sexos_id;
- //$entidade_pessoal->pai = $data->pai;
- //$entidade_pessoal->mae = $data->mae);
- //$entidade_pessoal->municipios_id = $data->municipios_id;
- //$entidade_pessoal->profissoes_id = $data->profissoes_id;
- //$entidade_pessoal->instrucoes_id = $data->insttrucoes_id;
- TTransaction::close(); // close the transaction
- new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- }
Tenta trocar essa parte do código:
<?
$id_entidade = TSession::getValue('id_entidade');
$criteria = new TCriteria;
$criteria->add(new TFilter('entidade_id', '=', $id_entidade));
$repository = new TRepository('EntidadePessoal');
$entidade_pessoal = $repository->load($criteria);
$objeto_pessoal = new stdClass;
$objeto_pessoal = $entidade_pessoal;
?>
Por isto:
Acredito que quando você faz o load, você tem um array, mesmo que somente com um objeto.
Instanciando EntidadePessoal passando o id, você vai ter somente um objeto.
Acredito que seja esse o problema.
Tenta trocar essa parte do código:
Por isto:
Acredito que quando você faz o load, você tem um array, mesmo que somente com um objeto.
Instanciando EntidadePessoal passando o id, você vai ter somente um objeto.
Acredito que seja esse o problema.
Caro Leonardo,
obrigado por sua atenção, mas o problema não esta na carga dos dados, tanto o trecho que esta no programa, quanto sua sugestão, os dados retornam como vejo no var_dump, porem TForm::sendData('form_pessoais', $objeto_pessoal); não envia os dados para o form, além disso quando faço a carga no programa pai, o form_pessoais abre tela cheia e não dentro do notebook, penso que o form filho deve ser independente e sua carga e dados,recebendo apenas o id_entidade do pai pela TSession o que você acha?
[] obrigado