Valor ID adicionar Linha Boa tarde, Estou começando no Adianti Framework e até agora estou conseguindo fazer o que preciso mas me reparei com uma necessidade e não estou conseguindo... Tenho um form para cadastro de contatos utilizando BootstrapFormBuilder com abas em uma aba eu tenho os contatos vinculados nessa pessoa, até ai tudo bem, o problema que não estou conseguindo é na aba contatos eu tenho um botão a...
EZ
Valor ID adicionar Linha  
Boa tarde,

Estou começando no Adianti Framework e até agora estou conseguindo fazer o que preciso mas me reparei com uma necessidade e não estou conseguindo...
Tenho um form para cadastro de contatos utilizando BootstrapFormBuilder com abas em uma aba eu tenho os contatos vinculados nessa pessoa, até ai tudo bem, o problema que não estou conseguindo é na aba contatos eu tenho um botão add, para inserir mais uma linha de contatos e preciso enviar o id da pessoa para fazer o vinculo, mas não estou conseguindo fazer isso, eu tenho esse function que inclui mais uma linha de contatos e preciso que o campo pc_pessoa traga o id principal que está na url

 
  1. <?php
  2. /**
  3. * Add contact row
  4. */
  5. public function addContatoRow($item)
  6. {
  7. $uniqid = mt_rand(1000000, 9999999);
  8. $pc_tipo = new TEntry('pc_tipo[]');
  9. $pc_tipo->{'data-row'} = $this->detail_row;
  10. $pc_tipo->setId('pc_tipo_'.$uniqid);
  11. $pc_tipo->setSize('100%');
  12. if (!empty($item->pc_tipo))
  13. {
  14. $pc_tipo->setValue($item->pc_tipo);
  15. }
  16. $pc_pessoa = new TEntry('pc_pessoa');
  17. $pc_pessoa->{'data-row'} = $this->detail_row;
  18. $pc_pessoa->setId('pc_pessoa_'.$uniqid);
  19. $pc_pessoa->setSize('100%');
  20. if(!empty($item->pc_pessoa))
  21. {
  22. $pc_pessoa->setValue($item->pc_pessoa);
  23. }else{
  24. $pc_pessoa->setValue($_GET['key']);
  25. }
  26. $pc_fone = new TEntry('pc_fone');
  27. $pc_fone->{'data-row'} = $this->detail_row;
  28. $pc_fone->setId('pc_fone_'.$uniqid);
  29. $pc_fone->setSize('100%');
  30. if(!empty($item->pc_fone))
  31. {
  32. $pc_fone->setValue($item->pc_fone);
  33. }
  34. // create delete button
  35. $del = new TImage('fa:trash-o red');
  36. $del->onclick = 'ttable_remove_row(this)';
  37. $row = $this->table_contatos->addRowSet( $pc_tipo,$pc_pessoa, $pc_fone, $del );
  38. $row->{'data-row'} = $this->detail_row;
  39. $this->form->addField($pc_tipo);
  40. $this->form->addField($pc_pessoa);
  41. $this->form->addField($pc_fone);
  42. $this->detail_row ++;
  43. }
  44. ?>

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


NR

Não entendi por que você precisa vincular os contatos com pessoa_id nesse momento. Geralmente isso é feito na hora de salvar(função onSave).
EZ

Então,

Pode até ser que o método correto seja ja na hora do onSave e eu esteja viajando na maionese, como disse estou começando agora no adianti, mas se na sua opinião o melhor caminho é no onSave vou tentar...
EZ

Agora estou com o seguinte problema,

Quando clico em salvar:

Argument 1 passed to TbPessoas::addContato() must be an instance of Contato, instance of TbPessoasContatos given, called in C:xampphtdocscrescer2appcontrolsecretariaTbPessoasForm3.class.php on line 93 and defined

e a minha função onSave está assim:

 
  1. <?php
  2. public static function onSave($param)
  3. {
  4. try
  5. {
  6. // open a transaction with database 'samples'
  7. TTransaction::open('crescer');
  8. //if (empty($param['birthdate']))
  9. //{
  10. // throw new Exception(AdiantiCoreTranslator::translate('The field ^1 is required', 'Birthdate'));
  11. //}
  12. // read the form data and instantiates an Active Record
  13. $pessoa = new TbPessoas;
  14. $pessoa->fromArray( $param );
  15. if( !empty($param['pc_tipo']) AND is_array($param['pc_tipo']) )
  16. {
  17. foreach( $param['pc_tipo'] as $row => $pc_tipo)
  18. {
  19. if ($pc_tipo)
  20. {
  21. $contato = new TbPessoasContatos;
  22. $contato->pc_tipo = $pc_tipo;
  23. $contato->pc_pessoa = $param['pc_pessoa'][$row];
  24. $contato->pc_fone = $param['pc_fone'][$row];
  25. // add the contact to the customer
  26. $pessoa->addContato($contato);
  27. }
  28. }
  29. }
  30. // stores the object in the database
  31. $pessoa->store();
  32. $data = new stdClass;
  33. $data->id = $pessoa->id;
  34. TForm::sendData('form_TbPessoas', $data);
  35. // shows the success message
  36. new TMessage('info', 'Record saved');
  37. TTransaction::close(); // close the transaction
  38. }
  39. catch (Exception $e) // in case of exception
  40. {
  41. // shows the exception error message
  42. new TMessage('error', $e->getMessage());
  43. // undo all pending operations
  44. TTransaction::rollback();
  45. }
  46. }
  47. ?>
NR

Edson, isso parece ser problema no relacionamento entre os models. A função addContato do model TbPessoas espera receber um objeto do tipo Contato e você está passando objetos TbPessoasContatos.
EZ

Verdade, era isso mesmo...

Obrigado