Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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(10000009999999);
  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.       }
  52.       $telefone = new TEntry('telefone[]');
  53.       if (!empty($contato->telefone))
  54.       {
  55.         if ($contato->tipo_telefone_id == 3) {
  56.             $telefone->setMask('99999-9999');
  57.             $telefone->setValue($contato->telefone);
  58.             $telefone->addValidation('telefone', new TNumericValidator);
  59.         }
  60.         else
  61.         {
  62.             $telefone->setMask('9999-9999');
  63.             $telefone->setValue($contato->telefone);
  64.             $telefone->addValidation('telefone', new TNumericValidator);
  65.         }        
  66.       }
  67.       $operadora_id = new TDBCombo('operadora_id[]','centinel','Operadora','id','nome');
  68.       $operadora_id->setDefaultOption(false);
  69.       if (!empty($contato->operadora_id))
  70.       {
  71.         $operadora_id->setValue($contato->operadora_id);
  72.       }
  73.         //set ids
  74.       $ddi->setId('ddi_'.$uniqid);
  75.       $dd->setId('dd_'.$uniqid);
  76.       $telefone->setId('telefone_'.$uniqid);
  77.       $tipo_telefone_id->setId('tipo_telefone_id_'.$uniqid);
  78.       $operadora_id->setId('operadora_id_'.$uniqid);
  79.         // create delete button
  80.       $del = new TImage('fa:trash-o blue');
  81.       $del->onclick 'ttable_remove_row(this)';
  82.       $row $this->table_contato->addRowSet([$ddi,$dd,$tipo_telefone_id,$telefone,$operadora_id,$del]);
  83.       $this->detail_row ++;
  84.       $ddi->setSize('40');
  85.       $dd->setSize('40');
  86.       $tipo_telefone_id->setSize('100');
  87.       $telefone->setSize('100');
  88.       $operadora_id ->setSize('100');
  89.     }
  90. ?>

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)


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.