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 ?
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 ?
- <?php
- //cria dados de contato
- $contato = new TLabel('Contato');
- $contato->class = 'lbl_titulo';
- $lbl_ddi = new TLabel('DDI');
- $lbl_dd = new TLabel('DDD');
- $lbl_tipo_telefone = new TLabel('Tipo Telefone');
- $lbl_telefone = new TLabel('Telefone');
- $lbl_operadora = new TLabel('Operadora');
- //Cria tabela contato adiciona campos
- $this->table_contato = new TTable('table_contato');
- $this->table_contato->width ='100%';
- $this->table_contato->addSection('thead');
- $this->table_contato->addSection('tbody');
- //cria frame contato
- $this->frame_contato = new TFrame;
- $this->frame_contato->style = 'width:98%;border:none;float:lef;margin-left:-1px;';
- $this->frame_contato->add($contato);
- $this->frame_contato->add($this->table_contato);
- $this->table_contato->addRowSet([$lbl_ddi,$lbl_dd,$lbl_tipo_telefone,$lbl_telefone,$lbl_operadora]);
- $this->form->addContent([$this->frame_contato]);
- public function addContatoRow($contato){
- $uniqid = mt_rand(1000000, 9999999);
- $ddi = new TEntry('ddi[]');
- $ddi->setValue('55');
- $ddi->addValidation('ddi', new TNumericValidator,new TMaxValueValidator,array(2));
- if (!empty($contato->ddi))
- {
- $ddi->setValue($contato->ddi);
- }
- $dd = new TEntry('dd[]');
- $dd->setValue('011');
- $dd->addValidation('ddd',new TNumericValidator, new TMaxValueValidator,array(3));
- if (!empty($contato->dd))
- {
- $dd->setValue($contato->dd);
- }
- $tipo_telefone_id = new TDBCombo('tipo_telefone_id[]','centinel','TipoTelefone','id','descricao');
- $tipo_telefone_id->setDefaultOption(false);
- // set exit action for input_exit
- $change_action = new TAction(array($this, 'formataTelefone'));
- $tipo_telefone_id->setChangeAction($change_action);
- if (!empty($contato->tipo_telefone_id))
- {
- foreach ($contato->tipo_telefone_id as $tipo_telefone_id)
- {
- $this->form->setFields($tipo_telefone_id);
- $tipo_telefone_id->setValue($contato->tipo_telefone_id);
- }
- }
- $telefone = new TEntry('telefone[]');
- if (!empty($contato->telefone))
- {
- if ($contato->tipo_telefone_id == 3) {
- $telefone->setMask('99999-9999');
- $telefone->setValue($contato->telefone);
- $telefone->addValidation('telefone', new TNumericValidator);
- }
- else
- {
- $telefone->setMask('9999-9999');
- $telefone->setValue($contato->telefone);
- $telefone->addValidation('telefone', new TNumericValidator);
- }
- }
- $operadora_id = new TDBCombo('operadora_id[]','centinel','Operadora','id','nome');
- $operadora_id->setDefaultOption(false);
- if (!empty($contato->operadora_id))
- {
- $operadora_id->setValue($contato->operadora_id);
- }
- //set ids
- $ddi->setId('ddi_'.$uniqid);
- $dd->setId('dd_'.$uniqid);
- $telefone->setId('telefone_'.$uniqid);
- $tipo_telefone_id->setId('tipo_telefone_id_'.$uniqid);
- $operadora_id->setId('operadora_id_'.$uniqid);
- // create delete button
- $del = new TImage('fa:trash-o blue');
- $del->onclick = 'ttable_remove_row(this)';
- $row = $this->table_contato->addRowSet([$ddi,$dd,$tipo_telefone_id,$telefone,$operadora_id,$del]);
- $this->detail_row ++;
- $ddi->setSize('40');
- $dd->setSize('40');
- $tipo_telefone_id->setSize('100');
- $telefone->setSize('100');
- $operadora_id ->setSize('100');
- }
- ?>
Pessoal,
Resolvido, porém a parte de adicionar mascara conforme tipo telefone, não esta funcionando, alguém pode ajudar ?
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.