Campo dinâmico não é adicionado Olá, Tenho o seguinte código no formulário, porém ao abrir recebo a seguinte mensagem Você deve passar o AdiantiWidgetFormTCombo (tipo_telefone_id[]) como parâmetro para TForm::setFields(); Porém não consegui identificar onde estou errando, alguém pode me ajudar ? ...
RB
Campo dinâmico não é adicionado  
Olá,

Tenho o seguinte código no formulário, porém ao abrir recebo a seguinte mensagem

Você deve passar o AdiantiWidgetFormTCombo (tipo_telefone_id[]) como parâmetro para TForm::setFields();

Porém não consegui identificar onde estou errando, alguém pode me ajudar ?

 
  1. <?php
  2. //cria dados de contato
  3. $contato = new TLabel('Contato');
  4. $contato->class = 'lbl_titulo';
  5. $lbl_ddi = new TLabel('DDI');
  6. $lbl_dd = new TLabel('DDD');
  7. $lbl_tipo_telefone = new TLabel('Tipo Telefone');
  8. $lbl_telefone = new TLabel('Telefone');
  9. $lbl_operadora = new TLabel('Operadora');
  10. //Cria tabela contato adiciona campos
  11. $this->table_contato = new TTable('table_contato');
  12. $this->table_contato->width ='100%';
  13. $this->table_contato->addSection('thead');
  14. $this->table_contato->addSection('tbody');
  15. //cria frame contato
  16. $this->frame_contato = new TFrame;
  17. $this->frame_contato->style = 'width:98%;border:none;float:lef;margin-left:-1px;';
  18. $this->frame_contato->add($contato);
  19. $this->frame_contato->add($this->table_contato);
  20. $this->table_contato->addRowSet([$lbl_ddi,$lbl_dd,$lbl_tipo_telefone,$lbl_telefone,$lbl_operadora]);
  21. $this->form->addContent([$this->frame_contato]);
  22. public function addContatoRow($contato){
  23. $uniqid = mt_rand(1000000, 9999999);
  24. $ddi = new TEntry('ddi[]');
  25. $ddi->setValue('55');
  26. $ddi->addValidation('ddi', new TNumericValidator,new TMaxValueValidator,array(2));
  27. if (!empty($contato->ddi))
  28. {
  29. $ddi->setValue($contato->ddi);
  30. }
  31. $dd = new TEntry('dd[]');
  32. $dd->setValue('011');
  33. $dd->addValidation('ddd',new TNumericValidator, new TMaxValueValidator,array(3));
  34. if (!empty($contato->dd))
  35. {
  36. $dd->setValue($contato->dd);
  37. }
  38. $tipo_telefone_id = new TDBCombo('tipo_telefone_id[]','centinel','TipoTelefone','id','descricao');
  39. $tipo_telefone_id->setDefaultOption(false);
  40. // set exit action for input_exit
  41. $change_action = new TAction(array($this, 'formataTelefone'));
  42. $tipo_telefone_id->setChangeAction($change_action);
  43. if (!empty($contato->tipo_telefone_id))
  44. {
  45. foreach ($contato->tipo_telefone_id as $tipo_telefone_id)
  46. {
  47. $this->form->setFields($tipo_telefone_id);
  48. $tipo_telefone_id->setValue($contato->tipo_telefone_id);
  49. }
  50. }
  51. $telefone = new TEntry('telefone[]');
  52. if (!empty($contato->telefone))
  53. {
  54. if ($contato->tipo_telefone_id == 3) {
  55. $telefone->setMask('99999-9999');
  56. $telefone->setValue($contato->telefone);
  57. $telefone->addValidation('telefone', new TNumericValidator);
  58. }
  59. else
  60. {
  61. $telefone->setMask('9999-9999');
  62. $telefone->setValue($contato->telefone);
  63. $telefone->addValidation('telefone', new TNumericValidator);
  64. }
  65. }
  66. $operadora_id = new TDBCombo('operadora_id[]','centinel','Operadora','id','nome');
  67. $operadora_id->setDefaultOption(false);
  68. if (!empty($contato->operadora_id))
  69. {
  70. $operadora_id->setValue($contato->operadora_id);
  71. }
  72. //set ids
  73. $ddi->setId('ddi_'.$uniqid);
  74. $dd->setId('dd_'.$uniqid);
  75. $telefone->setId('telefone_'.$uniqid);
  76. $tipo_telefone_id->setId('tipo_telefone_id_'.$uniqid);
  77. $operadora_id->setId('operadora_id_'.$uniqid);
  78. // create delete button
  79. $del = new TImage('fa:trash-o blue');
  80. $del->onclick = 'ttable_remove_row(this)';
  81. $row = $this->table_contato->addRowSet([$ddi,$dd,$tipo_telefone_id,$telefone,$operadora_id,$del]);
  82. $this->detail_row ++;
  83. $ddi->setSize('40');
  84. $dd->setSize('40');
  85. $tipo_telefone_id->setSize('100');
  86. $telefone->setSize('100');
  87. $operadora_id ->setSize('100');
  88. }
  89. ?>

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)


RB

Pessoal,

Resolvido, porém a parte de adicionar mascara conforme tipo telefone, não esta funcionando, alguém pode ajudar ?


 
  1. <?php
  2. //Parte de adicionar resolvido
  3. if (!empty($contato->tipo_telefone_id))
  4. {
  5. foreach ($contato->tipo_telefone_id as $tipo_telefone_id)
  6. {
  7. // set exit action for input_exit
  8. $change_action = new TAction(array($this, 'formataTelefone'));
  9. $tipo_telefone_id->setChangeAction($change_action);
  10. $tipo_telefone_id->setValue($contato->tipo_telefone_id);
  11. }
  12. }
  13. public static function formataTelefone($param)
  14. {
  15. try
  16. {
  17. if( isset($param['tipo_telefone_id']) && $param['tipo_telefone_id'] == '1' || $param['tipo_telefone_id'] == '2')
  18. {
  19. TScript::create( " $('input[name=telefone]').off();
  20. $('input[name=telefone]').val('');
  21. $('input[name=telefone]').keypress(function() { tentry_mask(this, event, '9999-9999') }); " );
  22. }
  23. elseif( isset($param['tipo_telefone_id']) && $param['tipo_telefone_id'] == '3')
  24. {
  25. TScript::create( " $('input[name=tipo_telefone_id]').off();
  26. $('input[name=tipo_telefone_id]').val('');
  27. $('input[name=tipo_telefone_id]').keypress(function() { tentry_mask(this, event, '99999-99999') }); " );
  28. }
  29. }
  30. catch(Exception $e)
  31. {
  32. new TMessage('error', $e->getMessage());
  33. }
  34. }
  35. ?>
NR

Como se trata de master/detail vetorial, os campos do detalhe são arrays, com isso você não consegue obter um determinado campo individualmente através do nome. Nesse caso você precisa do id do campo. Faça um var_dump de $param['tipo_telefone_id'] e você vai ver que o retorno será um array.

Use $param['_field_value'] para obter o valor do campo. Depois use $param['_field_id'] para obter o id.