Preencher formulário ao usar setCompletion Olá. Estou começando agora no Adianti, meu livro ainda não chegou, e provavelmente ele tenha a solução para minha dúvida. Enquanto isso peço ajuda aos colegas. Usei o setCompletion no campo 'Nome' do formulário. Ok, funcionou. Agora quero que os campos restantes do formulário sejam preenchidos automaticamente com as informações do cadastro, quando o usuário seleciona o nome da ...
PA
Preencher formulário ao usar setCompletion  
Fechado
Olá.

Estou começando agora no Adianti, meu livro ainda não chegou, e provavelmente ele tenha a solução para minha dúvida.
Enquanto isso peço ajuda aos colegas.

Usei o setCompletion no campo 'Nome' do formulário. Ok, funcionou.
Agora quero que os campos restantes do formulário sejam preenchidos automaticamente com as informações do cadastro, quando o usuário seleciona o nome da pessoa na lista.
Creio que preciso usar onExitAction, mas não sei como obter os dados referentes ao nome que o usuário selecionou.

Agradeço qualquer ajuda.

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


IF

Pode postar o código?
PA

Aqui está:

 
  1. <?php
  2. class PessoasForm extends TStandardForm
  3. {
  4. protected $form; // formulário de cadastro
  5. public function __construct()
  6. {
  7. parent::__construct();
  8. // define the database
  9. parent::setDatabase('condom');
  10. // define the Active Record
  11. parent::setActiveRecord('pessoas');
  12. // create the form
  13. $this->form = new TQuickForm('form_pessoas');
  14. $this->form->class = 'tform'; // CSS class
  15. $this->form->setFormTitle('Cadastro de Pessoas');
  16. $this->form->class = 'form-inline';
  17. // create the form fields
  18. $id = new THidden('id');
  19. $nome = new TEntry('nome');
  20. $nome->addValidation('Nome', new TRequiredValidator);
  21. $email = new TEntry('email');
  22. $email->addValidation('Email', new TEmailValidator);
  23. $cpf = new TEntry('cpf');
  24. $cpf->setMask('999.999.999-99');
  25. $fone1 = new TEntry('fone1');
  26. $fone1->setMask('(99) 9999-9999');
  27. $fone2 = new TEntry('fone2');
  28. $fone2->setMask('(99) 9999-9999');
  29. $datanasc = new TDate('datanasc');
  30. $datanasc->setMask('dd/mm/yyyy');
  31. $sexo = new TCombo('sexo');
  32. $options = array('M'=>'Masculino','F'=>'Feminino');
  33. $sexo->addItems($options);
  34. // open database transaction
  35. TTransaction::open($this->database);
  36. // items repository
  37. $repository = new TRepository($this->activeRecord);
  38. // load all objects
  39. $collection = $repository->load(new TCriteria);
  40. // add the items
  41. $items = array();
  42. foreach ($collection as $object)
  43. {
  44. $items[$object->id] = $object->nome;
  45. }
  46. $nome->setCompletion( array_values( $items ));
  47. TTransaction::close();
  48. // define how many columns
  49. $this->form->setFieldsByRow(2);
  50. // add the form fields
  51. $this->form->addQuickField('Nome Completo', $nome, 300);
  52. $this->form->addQuickField('Nascimento', $datanasc, 80);
  53. $this->form->addQuickField('Email', $email, 300);
  54. $this->form->addQuickField('Sexo', $sexo, 100);
  55. $this->form->addQuickField('CPF', $cpf, 100);
  56. $this->form->addQuickField('Fone1', $fone1, 100);
  57. $this->form->addQuickField('ID', $id, 100);
  58. $this->form->addQuickField('Fone2', $fone2, 100);
  59. // set exit action for input_exit
  60. $exit_action = new TAction(array($this, 'onExitAction'));
  61. $nome->setExitAction($exit_action);
  62. // define the form actions
  63. $this->form->addQuickAction(('Grava'), new TAction(array($this, 'onSave')), 'ico_save.png');
  64. $this->form->addQuickAction(('Novo'), new TAction(array($this, 'onClear')), 'ico_new.png');
  65. // make id not editable
  66. $id->setEditable(FALSE);
  67. // wrap objects inside a table
  68. $vbox = new TVBox;
  69. $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  70. $vbox->add($this->form);
  71. // pack the table inside the page
  72. parent::add($vbox);
  73. }
  74. public static function onExitAction($param)
  75. {
  76. // Aqui preciso buscar o conteúdo do cadastro no banco de dados
  77. // e colocar nos campos correspondentes do formulário.
  78. ?>
IF

Segue o código:

 
  1. <?php
  2. $nome = $param['nome'];
  3. TTransaction::open('condom');
  4. $repository = new TRepository('pessoas');
  5. $criteria = new TCriteria;
  6. $criteria->add(new TFilter('nome','=', trim($nome)));
  7. $pessoas = $repository->load($criteria);
  8. $result = new StdClass;
  9. foreach ($pessoas as $obj)
  10. {
  11. $result->email = $obj->email; //Campo email do formulario
  12. .... // Outros campos aqui ...
  13. }
  14. TForm::sendData('form_pessoas', $result);
  15. TTransaction::close();
  16. ?>
PA

Muito obrigado Ivan, sua solução funcionou perfeitamente.