Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
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);...
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

 
  1. <?php
  2. /**
  3. * CustomerFormView
  4. *
  5. * @version 1.0
  6. * @package setcia
  7. * @author Antonio Augusto Tavares
  8. * @copyright Copyright (c) 2018 Setsoft - Consultoria e Informática Ltda
  9. */
  10. class PessoaisForm extends TPage
  11. {
  12. private $form; // form
  13. /**
  14. * Class constructor
  15. * Creates the page and the registration form
  16. */
  17. function __construct()
  18. {
  19. parent::__construct();
  20. // creates the form
  21. $this->form = new BootstrapFormBuilder('form_pessoais');
  22. $this->form->style = 'width: 100%';
  23. $this->form->setFieldSizes('100%');
  24. $id = new TEntry('id');
  25. $id->setEditable(false);
  26. $tratamentos_id = new TDBCombo('tratamentos_id', 'setcis', 'tratamentos', 'id', 'singular');
  27. $nascimento = new TDate('nascimento');
  28. $civis_id = new TDBCombo('civis_id', 'setcis', 'civis', 'id', 'descricao', 'descricao asc');
  29. $sexos_id = new TDBCombo('sexos_id', 'setcis', 'sexos', 'id', 'descricao');
  30. $pai = new TEntry('pai');
  31. $mae = new TEntry('mae');
  32. $municipios_id = new TDBUniqueSearch('municipios_id', 'setcis', 'municipio', 'id', 'nome', 'nome asc');
  33. $profissoes_id = new TDBUniqueSearch('profissoes_id', 'setcis', 'profissoes', 'id', 'descricao', 'descricao asc');
  34. $instrucoes_id = new TDBCombo('instrucoes_id', 'setcis', 'instrucoes', 'id', 'descricao');
  35. $entidades_id = new TEntry('entidades_id');
  36. $row = $this->form->addFields([ new TLabel('id') ],
  37. [ new TLabel('Tratamento') ],
  38. [ new TLabel('Nascimento') ],
  39. [ new TLabel('Civil') ],
  40. [ new TLabel('Sexo') ]);
  41. $row->layout = ['col-sm-1','col-sm-3', 'col-sm-4', 'col-sm-2', 'col-sm-2' ];
  42. $row = $this->form->addFields([ $id ],
  43. [ $tratamentos_id ],
  44. [ $nascimento ],
  45. [ $civis_id ],
  46. [ $sexos_id ]);
  47. $row->layout = ['col-sm-1','col-sm-3', 'col-sm-4', 'col-sm-2', 'col-sm-2' ];
  48. $row = $this->form->addFields([ new TLabel('Pai') ],
  49. [ new TLabel('Mãe') ]);
  50. $row->layout = ['col-sm-6', 'col-sm-6'];
  51. $row = $this->form->addFields([ $pai ],
  52. [ $mae ]);
  53. $row->layout = ['col-sm-6', 'col-sm-6'];
  54. $row = $this->form->addFields([ new TLabel('Naturalidade') ],
  55. [ new TLabel('Profissão') ],
  56. [ new TLabel('Instrução') ],
  57. [ new TLabel('Entidade') ] );
  58. $row->layout = ['col-sm-4', 'col-sm-4', 'col-sm-3', 'col-sm-1'];
  59. $row = $this->form->addFields([ $municipios_id ],
  60. [ $profissoes_id ],
  61. [ $instrucoes_id ],
  62. [ $entidades_id ]);
  63. $row->layout = ['col-sm-4', 'col-sm-4', 'col-sm-3', 'col-sm-1'];
  64. $this->form->addAction( 'Editar', new TAction([$this, 'onEdit']), 'fa:save green' );
  65. $this->form->addAction( 'Salvar', new TAction([$this, 'onSave']), 'fa:save green' );
  66. //$this->form->addAction( 'Excluir', new TAction([$this, 'onDelete']), 'fa:eraser red' );
  67. parent::add($this->form);
  68. }
  69. public static function onEdit($param)
  70. {
  71. try
  72. {
  73. TTransaction::open('setcis');
  74. $id_entidade = TSession::getValue('id_entidade');
  75. $criteria = new TCriteria;
  76. $criteria->add(new TFilter('entidade_id', '=', $id_entidade));
  77. $repository = new TRepository('EntidadePessoal');
  78. $entidade_pessoal = $repository->load($criteria);
  79. $objeto_pessoal = new stdClass;
  80. $objeto_pessoal = $entidade_pessoal;
  81. TTransaction::close(); // close the transaction
  82. //var_dump($objeto_pessoal);
  83. TForm::sendData('form_pessoais', $objeto_pessoal);
  84. //$this->form->setData($objeto_pessoal); // fill form data
  85. //new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  86. }
  87. catch (Exception $e) // in case of exception
  88. {
  89. new TMessage('error', $e->getMessage());
  90. TTransaction::rollback();
  91. }
  92. }
  93. public function onSave($param)
  94. {
  95. try
  96. {
  97. TTransaction::open('setcis');
  98. $data = $this->form->getData(); // get form data as array
  99. $data->entidades_id = TSession::getValue('id_entidade');
  100. if( empty($param['id']))
  101. {
  102. $entidade_pessoal = new EntidadePessoal;
  103. }
  104. else
  105. {
  106. $entidade_pessoal = new EntidadePessoal((int) $param['id']);
  107. }
  108. $entidade_pessoal->fromArray( (array) $data); // load the object with data
  109. $entidade_pessoal->store(); // save the object
  110. // get the generated id
  111. $data->id = $entidade_pessoal->id;
  112. $this->form->setData($data); // fill form data
  113. //$entidade_pessoal->tratamentos_id = $data->tratamentos_id;
  114. //$entidade_pessoal->nascimento = $data->nascimento;
  115. //$entidade_pessoal->civis_id = $data->civis_id;
  116. //$entidade_pessoal->sexos_id = $data->sexos_id;
  117. //$entidade_pessoal->pai = $data->pai;
  118. //$entidade_pessoal->mae = $data->mae);
  119. //$entidade_pessoal->municipios_id = $data->municipios_id;
  120. //$entidade_pessoal->profissoes_id = $data->profissoes_id;
  121. //$entidade_pessoal->instrucoes_id = $data->insttrucoes_id;
  122. TTransaction::close(); // close the transaction
  123. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  124. }
  125. catch (Exception $e) // in case of exception
  126. {
  127. new TMessage('error', $e->getMessage());
  128. TTransaction::rollback();
  129. }
  130. }
  131. }

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (3)


LG

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:
 
  1. <?php
  2. $id_entidade = TSession::getValue('id_entidade');
  3. $objeto_pessoal = new EntidadePessoal($id_entidade);
  4. ?>

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.
LG

Tenta trocar essa parte do código:
 
  1. <?php
  2. $id_entidade = TSession::getValue('id_entidade');
  3. $criteria = new TCriteria;
  4. $criteria->add(new TFilter('entidade_id', '=', $id_entidade));
  5. $repository = new TRepository('EntidadePessoal');
  6. $entidade_pessoal = $repository->load($criteria);
  7. $objeto_pessoal = new stdClass;
  8. $objeto_pessoal = $entidade_pessoal;
  9. ?>


Por isto:
 
  1. <?php
  2. $objeto_pessoal = new EntidadePessoal(TSession::getValue('id_entidade'));
  3. ?>


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.
AT

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