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

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 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.                  
  11.             $this->cursos->addDetail($curso_detail);
  12.      }
  13.                     
  14.     $this->cursos->addCloneAction();
  15. }
  16. ?>
CJ

Nataniel,

Resolvi transformando a função em static.

Obrigado