Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
Erro nos campos vetoriais ao salvar Pessoal, Quando salvo os dados do formulário, na aba Cursos não exibe os dados salvos no BD. O que posso fazer para listá-los depois de salvar. PS: Ao editar o registro os dados são preenchidos corretamente. ...
CJ
Erro nos campos vetoriais ao salvar  
Pessoal,

Quando salvo os dados do formulário, na aba Cursos não exibe os dados salvos no BD. O que posso fazer para listá-los depois de salvar.

PS: Ao editar o registro os dados são preenchidos corretamente.

 
  1. <?php
  2. /**
  3. * FuncionarioForm Form
  4. * @author <your name here>
  5. */
  6. class FuncionarioForm extends TPage
  7. {
  8. protected $form; // form
  9. private $cursos;
  10. /**
  11. * Form constructor
  12. * @param $param Request
  13. */
  14. public function __construct( $param )
  15. {
  16. parent::__construct();
  17. // creates the form
  18. $this->form = new BootstrapFormBuilder('form_Funcionario');
  19. $this->form->setFormTitle('Funcionário');
  20. // create the form fields
  21. $id = new TEntry('id');
  22. $nome = new TEntry('nome');
  23. $endereco = new TEntry('endereco');
  24. $numero = new TEntry('numero');
  25. $complem = new TEntry('complem');
  26. $bairro = new TEntry('bairro');
  27. $cidade = new TEntry('cidade');
  28. $uf = new TCombo('uf');
  29. $cep = new TEntry('cep');
  30. $nacionalidade = new TEntry('nacionalidade');
  31. $naturalidade = new TEntry('naturalidade');
  32. $uf_natural = new TCombo('uf_natural');
  33. $data_nascimento = new TDate('data_nascimento');
  34. $telefone = new TEntry('telefone');
  35. $celular = new TEntry('celular');
  36. $email = new TEntry('email');
  37. $sexo = new TCombo('sexo');
  38. $estadocivil_id = new TDBCombo('estadocivil_id', 'sispessoal', 'Estadocivil','id','nome','nome');
  39. $racacor_id = new TDBCombo('racacor_id', 'sispessoal', 'Racacor','id','nome','nome');
  40. $pai = new TEntry('pai');
  41. $mae = new TEntry('mae');
  42. $grauinstrucao_id = new TDBCombo('grauinstrucao_id', 'sispessoal','Grauinstrucao', 'id','nome','nome');
  43. $rg = new TEntry('rg');
  44. $rg_data = new TDate('rg_data');
  45. $rg_orgao = new TEntry('rg_orgao');
  46. $cpf = new TEntry('cpf');
  47. $ct = new TEntry('ct');
  48. $ct_serie = new TEntry('ct_serie');
  49. $ct_uf = new TCombo('ct_uf');
  50. $ct_data = new TDate('ct_data');
  51. $reg_profissional = new TEntry('reg_profissional');
  52. $cnh = new TEntry('cnh');
  53. $titulo = new TEntry('titulo');
  54. $titulo_zona = new TEntry('titulo_zona');
  55. $titulo_secao = new TEntry('titulo_secao');
  56. $titulo_cidade = new TEntry('titulo_cidade');
  57. $pis_pasep = new TEntry('pis_pasep');
  58. $pis_pasep_data = new TDate('pis_pasep_data');
  59. $obs = new TText('obs');
  60. $pendencias = new TText('pendencias');
  61. $ativo = new TRadioGroup('ativo');
  62. $banco_id = new TDBCombo('banco_id','sispessoal','Banco','id','nome','nome');
  63. $agencia = new TEntry('agencia');
  64. $conta = new TEntry('conta');
  65. $operacao = new TEntry('operacao');
  66. // Tamanho dos campos
  67. $nome->setSize('100%');
  68. $endereco->setSize('100%');
  69. $numero->setSize('100%');
  70. $complem->setSize('100%');
  71. $bairro->setSize('100%');
  72. $cidade->setSize('100%');
  73. $uf->setSize('100%');
  74. $cep->setSize('100%');
  75. $nacionalidade->setSize('100%');
  76. $naturalidade->setSize('100%');
  77. $uf_natural->setSize('100%');
  78. $data_nascimento->setSize('100%');
  79. $telefone->setSize('100%');
  80. $celular->setSize('100%');
  81. $email->setSize('100%');
  82. $sexo->setSize('100%');
  83. $estadocivil_id->setSize('100%');
  84. $racacor_id->setSize('100%');
  85. $pai->setSize('100%');
  86. $mae->setSize('100%');
  87. $grauinstrucao_id->setSize('100%');
  88. $rg->setSize('100%');
  89. $rg_data->setSize('100%');
  90. $rg_orgao->setSize('100%');
  91. $cpf->setSize('100%');
  92. $ct->setSize('100%');
  93. $ct_serie->setSize('100%');
  94. $ct_uf->setSize('100%');
  95. $ct_data->setSize('100%');
  96. $reg_profissional->setSize('100%');
  97. $cnh->setSize('100%');
  98. $titulo->setSize('100%');
  99. $titulo_zona->setSize('100%');
  100. $titulo_secao->setSize('100%');
  101. $titulo_cidade->setSize('100%');
  102. $pis_pasep->setSize('100%');
  103. $pis_pasep_data->setSize('100%');
  104. $obs->setSize('100%');
  105. $pendencias->setSize('100%');
  106. $ativo->setSize('100%');
  107. $banco_id->setSize('100%');
  108. $agencia->setSize('100%');
  109. $conta->setSize('100%');
  110. $operacao->setSize('100%');
  111. $options_ativo = ['S'=>'Sim', 'N'=>'Não'];
  112. $ativo->addItems($options_ativo);
  113. $ativo->setLayout('horizontal');
  114. $options_sexo = ['M'=>'Masculino', 'F'=>'Feminino'];
  115. $sexo->addItems($options_sexo);
  116. $options_uf = [
  117. 'AC'=>'Acre',
  118. 'AL'=>'Alagoas',
  119. 'AP'=>'Amapá',
  120. 'AM'=>'Amazonas',
  121. 'BA'=>'Bahia',
  122. 'CE'=>'Ceará',
  123. 'DF'=>'Distrito Federal',
  124. 'ES'=>'Espírito Santo',
  125. 'GO'=>'Goiás',
  126. 'MA'=>'Maranhão',
  127. 'MT'=>'Mato Grosso',
  128. 'MS'=>'Mato Grosso do Sul',
  129. 'MG'=>'Minas Gerais',
  130. 'PA'=>'Pará',
  131. 'PB'=>'Paraíba',
  132. 'PR'=>'Paraná',
  133. 'PE'=>'Pernambuco',
  134. 'PI'=>'Piauí',
  135. 'RJ'=>'Rio de Janeiro',
  136. 'RN'=>'Rio Grande do Norte',
  137. 'RS'=>'Rio Grande do Sul',
  138. 'RO'=>'Rondônia',
  139. 'RR'=>'Roraima',
  140. 'SC'=>'Santa Catarina',
  141. 'SP'=>'São Paulo',
  142. 'SE'=>'Sergipe',
  143. 'TO'=>'Tocantins'
  144. ];
  145. $uf->addItems($options_uf);
  146. $uf_natural->addItems($options_uf);
  147. $ct_uf->addItems($options_uf);
  148. // Máscaras dos campos
  149. $id->setEditable(FALSE);
  150. $nome->forceUpperCase();
  151. $endereco->forceUpperCase();
  152. $numero->forceUpperCase();
  153. $complem->forceUpperCase();
  154. $bairro->forceUpperCase();
  155. $cidade->forceUpperCase();
  156. $uf->enableSearch();
  157. $cep->setMask('99999-999');
  158. $nacionalidade->forceUpperCase();
  159. $naturalidade->forceUpperCase();
  160. $uf_natural->enableSearch();
  161. $data_nascimento->setMask('dd/mm/yyyy', false);
  162. $data_nascimento->setDatabaseMask('yyyy-mm-dd');
  163. $telefone->setMask('(99)9999-9999', true);
  164. $celular->setMask('(99)99999-9999', true);
  165. $email->forceLowerCase();
  166. $sexo->enableSearch();
  167. $estadocivil_id->enableSearch();
  168. $racacor_id->enableSearch();
  169. $pai->forceUpperCase();
  170. $mae->forceUpperCase();
  171. $grauinstrucao_id->enableSearch();
  172. $rg->forceUpperCase();
  173. $rg_data->setMask('dd/mm/yyyy', false);
  174. $rg_data->setDatabaseMask('yyyy-mm-dd');
  175. $rg_orgao->forceUpperCase();
  176. $cpf->setMask('999.999.999-99');
  177. $ct->forceUpperCase();
  178. $ct_serie->forceUpperCase();
  179. $ct_uf->enableSearch();
  180. $ct_data->setMask('dd/mm/yyyy', false);
  181. $ct_data->setDatabaseMask('yyyy-mm-dd');
  182. $reg_profissional->forceUpperCase();
  183. $cnh->forceUpperCase();
  184. $titulo->forceUpperCase();
  185. $titulo_zona->forceUpperCase();
  186. $titulo_secao->forceUpperCase();
  187. $titulo_cidade->forceUpperCase();
  188. $pis_pasep->forceUpperCase();
  189. $pis_pasep_data->setMask('dd/mm/yyyy', false);
  190. $pis_pasep_data->setDatabaseMask('yyyy-mm-dd');
  191. $ativo->setUseButton(true);
  192. $banco_id->enableSearch();
  193. $agencia->forceUpperCase();
  194. $conta->forceUpperCase();
  195. $operacao->forceUpperCase();
  196. // Aba Dados Gerais
  197. $this->form->appendPage('Dados Gerais');
  198. $this->form->addContent([ new TFormSeparator('Funcionário', '#18953c', '18', '#eeeeee')] );
  199. $this->form->addFields( [ new TLabel('Id') ], [$id]);
  200. $this->form->addFields( [ new TLabel('Ativo')], [$ativo], [new TLabel('CPF', 'red')], [$cpf] );
  201. $this->form->addFields( [ new TLabel('Nome', 'red')], [$nome] );
  202. $this->form->addFields( [ new TLabel('Data Nasc') ], [ $data_nascimento ], [new TLabel('Sexo') ], [ $sexo ] );
  203. $this->form->addFields( [ new TLabel('Raça/Cor') ], [ $racacor_id ], [new TLabel('Estado Civil') ], [ $estadocivil_id ] );
  204. $this->form->addFields( [ new TLabel('Naturalidade') ], [ $naturalidade], [ new TLabel('UF') ], [ $uf_natural ] );
  205. $this->form->addFields( [ new TLabel('Grau de Instrução', 'red') ], [ $grauinstrucao_id]);
  206. $this->form->addContent([ new TFormSeparator('Filiação', '#18953c', '18', '#eeeeee')] );
  207. $this->form->addFields( [ new TLabel('Nome Pai') ], [ $pai ], [ new TLabel('Nome Mãe') ], [ $mae ] );
  208. $this->form->addContent([ new TFormSeparator('Endereço', '#18953c', '18', '#eeeeee')] );
  209. $this->form->addFields( [ new TLabel('Endereço') ], [ $endereco ], [new TLabel('Número') ], [ $numero ] );
  210. $this->form->addFields( [ new TLabel('Complem') ], [ $complem ], [new TLabel('Bairro') ], [ $bairro ] );
  211. $this->form->addFields( [ new TLabel('Cidade') ], [ $cidade ], [ new TLabel('UF') ], [ $uf ]);
  212. $this->form->addFields( [ new TLabel('CEP') ], [ $cep ], [ new TLabel('Telefone Fixo') ], [ $telefone ] );
  213. $this->form->addFields( [ new TLabel('Celular') ], [ $celular ], [ new TLabel('E-mail') ], [ $email ] );
  214. $this->form->addContent([ new TFormSeparator('Dados Bancários', '#18953c', '18', '#eeeeee')] );
  215. $this->form->addFields( [ new TLabel('Banco')], [$banco_id], [ new TLabel('Operação') ],[ $operacao ] );
  216. $this->form->addFields( [ new TLabel('Agencia')], [$agencia], [ new TLabel('Conta')],[ $conta] );
  217. // Aba Documentação
  218. $this->form->appendPage('Documentação');
  219. $this->form->addContent([ new TFormSeparator('Identidade', '#18953c', '18', '#eeeeee')] );
  220. $this->form->addFields( [ new TLabel('Número') ], [$rg], [ new TLabel('Data Expedição') ], [$rg_data], [ new TLabel('Emissor') ], [$rg_orgao]);
  221. $this->form->addContent([ new TFormSeparator('Carteira de Trabalho', '#18953c', '18', '#eeeeee')] );
  222. $this->form->addFields( [ new TLabel('Número') ], [$ct], [ new TLabel('Série') ], [$ct_serie]);
  223. $this->form->addFields( [ new TLabel('UF') ], [$ct_uf] , [ new TLabel('Data') ], [$ct_data]);
  224. $this->form->addContent([ new TFormSeparator('Titulo Eleitoral', '#18953c', '18', '#eeeeee')] );
  225. $this->form->addFields( [ new TLabel('Número') ], [$titulo], [ new TLabel('Zona') ], [$titulo_zona]);
  226. $this->form->addFields( [ new TLabel('Seção') ], [$titulo_secao] , [ new TLabel('Cidade/UF') ], [$titulo_cidade]);
  227. $this->form->addContent([ new TFormSeparator('PIS/PASEP', '#18953c', '18', '#eeeeee')] );
  228. $this->form->addFields( [ new TLabel('Número') ], [$pis_pasep], [ new TLabel('Data Emissão') ], [$pis_pasep_data]);
  229. $this->form->addContent([ new TFormSeparator('Outros', '#18953c', '18', '#eeeeee')] );
  230. $this->form->addFields( [ new TLabel('Registro Profissional') ], [$reg_profissional], [ new TLabel('CNH') ], [$cnh]);
  231. // Aba Cursos
  232. $this->form->appendPage('Cursos');
  233. $curso_id = new TDBCombo('curso_id[]', 'sispessoal', 'Curso', 'id', 'nome', 'nome');
  234. $curso_id->enableSearch();
  235. $curso_id->setSize('400');
  236. $this->cursos = new TFieldList;
  237. $this->cursos->addField( '<b>Curso</b>', $curso_id);
  238. $this->form->addField($curso_id);
  239. $this->form->addContent( [ $this->cursos ] );
  240. $this->form->appendPage('Especializações');
  241. $this->form->appendPage('Histórico Admissional');
  242. // Aba Outras informações
  243. $this->form->appendPage('Outras informações');
  244. $this->form->addFields( [ new TLabel('Pendências') ], [$pendencias]);
  245. $this->form->addFields( [ new TLabel('Observações') ], [$obs]);
  246. // create the form actions
  247. $btn = $this->form->addAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
  248. $btn->class = 'btn btn-sm btn-primary';
  249. $this->form->addAction(_t('New'), new TAction(array($this, 'onClear')), 'bs:plus-sign green');
  250. $this->form->addAction( 'Listagem de Funcionários', new TAction(array('FuncionarioList', 'onReload')), 'fa:table blue' );
  251. // vertical box container
  252. $container = new TVBox;
  253. $container->style = 'width: 100%';
  254. $container->add( $this->form);
  255. parent::add($container);
  256. }
  257. /**
  258. * Save form data
  259. * @param $param Request
  260. */
  261. public function onSave( $param )
  262. {
  263. try
  264. {
  265. TTransaction::open('sispessoal'); // open a transaction
  266. $this->form->validate();
  267. $funcionario = new Funcionario;
  268. $funcionario->fromArray( $param );
  269. if( !empty($param['curso_id']) AND is_array($param['curso_id']) )
  270. {
  271. foreach( $param['curso_id'] as $row => $curso_id)
  272. {
  273. if ($curso_id)
  274. {
  275. $curso = new Curso;
  276. $curso->id = $curso_id;
  277. $funcionario->addCurso($curso);
  278. }
  279. }
  280. }
  281. $funcionario->store();
  282. $data = new stdClass;
  283. $data->id = $funcionario->id;
  284. $this->cursos = $funcionario->getCursos();
  285. TForm::sendData('form_Funcionario', $data);
  286. TTransaction::close(); // close the transaction
  287. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  288. }
  289. catch (Exception $e) // in case of exception
  290. {
  291. new TMessage('error', $e->getMessage()); // shows the exception error message
  292. $this->form->setData( $this->form->getData() ); // keep form data
  293. TTransaction::rollback(); // undo all pending operations
  294. }
  295. }
  296. /**
  297. * Clear form data
  298. * @param $param Request
  299. */
  300. public function onClear( $param )
  301. {
  302. $this->form->clear(TRUE);
  303. $this->cursos->addHeader();
  304. $this->cursos->addDetail( new stdClass );
  305. $this->cursos->addCloneAction();
  306. }
  307. /**
  308. * Load object to form data
  309. * @param $param Request
  310. */
  311. public function onEdit( $param )
  312. {
  313. try
  314. {
  315. if (isset($param['key']))
  316. {
  317. $key = $param['key']; // get the parameter $key
  318. TTransaction::open('sispessoal'); // open a transaction
  319. $object = new Funcionario($key); // instantiates the Active Record
  320. $cursos = $object->getCursos();
  321. if ($cursos)
  322. {
  323. $this->cursos->addHeader();
  324. foreach ($cursos as $curso)
  325. {
  326. $curso_detail = new stdClass;
  327. $curso_detail->curso_id = $curso->id;
  328. $this->cursos->addDetail($curso_detail);
  329. }
  330. $this->cursos->addCloneAction();
  331. }
  332. else
  333. {
  334. $this->onClear($param);
  335. }
  336. $this->form->setData($object); // fill the form
  337. TTransaction::close(); // close the transaction
  338. }
  339. else
  340. {
  341. $this->form->clear(TRUE);
  342. }
  343. }
  344. catch (Exception $e) // in case of exception
  345. {
  346. new TMessage('error', $e->getMessage()); // shows the exception error message
  347. TTransaction::rollback(); // undo all pending operations
  348. }
  349. }
  350. }
  351. ?>

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 (2)


NR

Geralmente nos forms vetoriais a função onSave é static, o que evita esse problema.

Mas se quiser manter dessa maneira, tem que readicionar os dados à tela, como na onEdit:
 
  1. <?php
  2. // trecho da onEdit que adiciona os dados
  3. if ($cursos)
  4. {
  5. $this->cursos->addHeader();
  6. foreach ($cursos as $curso)
  7. {
  8. $curso_detail = new stdClass;
  9. $curso_detail->curso_id = $curso->id;
  10. $this->cursos->addDetail($curso_detail);
  11. }
  12. $this->cursos->addCloneAction();
  13. }
  14. ?>
CJ

Nataniel,

Resolvi transformando a função em static.

Obrigado