Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Botão no formulário Estou postando pois ainda não encontrei uma solução para o meu problema. Tenho um cadastro de endereços e as ruas estão listadas em um combo, ocorre que preciso adicionar ruas que ainda não estão cadastradas. Para isto, vi no fórum que uma boa prática é utilizar o inputDialog. Mas para chamar, gostaria de ter um botão simples, ao lado do campo da rua para adicionar. Já tentei de vári...
LF
Botão no formulário  
Estou postando pois ainda não encontrei uma solução para o meu problema.
Tenho um cadastro de endereços e as ruas estão listadas em um combo, ocorre que preciso adicionar ruas que ainda não estão cadastradas. Para isto, vi no fórum que uma boa prática é utilizar o inputDialog. Mas para chamar, gostaria de ter um botão simples, ao lado do campo da rua para adicionar. Já tentei de várias formas.
Se alguém puder me ajudar, vai salvar meu dia de programação...
  1. <?php
  2. // creates the form
  3.         $this->form = new TQuickForm('form_Endereco');
  4.         $this->form->class 'tform'// change CSS class
  5.         $this->form = new BootstrapFormWrapper($this->form);
  6.         $this->form->style 'display: table;width:100%'// change style
  7.         // define the form title
  8.         $this->form->setFormTitle('Endereco');
  9.         // create the form fields
  10.         $endereco_id = new TEntry('endereco_id');
  11.         $endereco_status = new TCombo('endereco_status');
  12.         $estado_id = new TDBCombo('estado_id''qualitta''Estado''estado_id''estado_uf');
  13.         $cidade_id = new TCombo('cidade_id');
  14.         $rua_id = new TCombo('rua_id');
  15.         $endereco_numero = new TEntry('endereco_numero');
  16.         $bairro_id = new TCombo('bairro_id');
  17.         $endereco_cep = new TEntry('endereco_cep');
  18.         $endereco_complemento = new TEntry('endereco_complemento');
  19.         
  20.         // add items to status
  21.         $endereco_status->addItems(array('1' => 'Ativo'));
  22.         $endereco_status->setDefaultOption('Inativo');
  23.         // add change actions
  24.         $change_uf = new TAction(array($this'onChangeUf'));
  25.         $estado_id->setChangeAction($change_uf);
  26.         $change_city = new TAction(array($this'onChangeCity'));
  27.         $cidade_id->setChangeAction($change_city);
  28.         // add the fields
  29.         $this->form->addQuickField('Endereco Id'$endereco_id100);
  30.         $this->form->addQuickField('Endereco Status'$endereco_status100);
  31.         $this->form->addQuickField('Estado Id'$estado_id100, new TRequiredValidator);
  32.         $this->form->addQuickField('Cidade Id'$cidade_id100, new TRequiredValidator);
  33.         $this->form->addQuickField('Rua Id'$rua_id100, new TRequiredValidator);
  34.         $this->form->addQuickField('Endereco Numero'$endereco_numero100);
  35.         $this->form->addQuickField('Bairro Id'$bairro_id100, new TRequiredValidator);
  36.         $this->form->addQuickField('Endereco Cep'$endereco_cep200);
  37.         $this->form->addQuickField('Endereco Complemento'$endereco_complemento200);
  38. ?>

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


MG

Minha sugestão:

  1. <?php
  2.     $button_new_end = new TButton('new_end');
  3.     $action_novo_end = new TAction(array($this,'onNovoEnd'));
  4.     $button_new_end->setAction($action_novo_end);
  5.     $button_new_end->setImage('ico_add.png');
  6.     $this->form->addQuickFields('Endereco Id',array($endereco_id$button_new_end)));
  7. ......
  8.    public static function onNovoEnd($param) {
  9.         // teu inputDialog
  10.         $obj = new stdClass;
  11.         $obj->rua_id = <resultado_insercao>;
  12.        TCombo::reload('rua_id',$obj);
  13.    }
NR

Só complementando a resposta do Marcelo, a assinatura da função reload da classe TCombo é a seguinte:
  1. <?php
  2. /**
  3.      * Reload combobox items after it is already shown
  4.      * @param $formname form name (used in gtk version)
  5.      * @param $name field name
  6.      * @param $items array with items
  7.      * @param $startEmpty ...
  8.      */
  9.     public static function reload($formname$name$items$startEmpty FALSE)
  10. ?>


Faltou informar o primeiro parâmetro(nome do formulário). E o terceiro parâmetro deve ser um array associativo(chave=>valor) e não um objeto.
LF

Queridos amigos, não apareceu o botão...
  1. <?php
  2. $this->form = new TQuickForm('form_Endereco');
  3.         $logradouro_id = new TCombo('logradouro_id');
  4.         $button_novoLogradouro = new TButton('button_novoLogradouro');
  5.         $action_novoLogradouro = new TAction(array($this,'onNovoLogradouro'));
  6.         $button_novoLogradouro->setAction($action_novoLogradouro);
  7.         $button_novoLogradouro->setImage('fa:search');
  8.         $button_novoLogradouro->setLabel('Adicionar');
  9.         $this->form->addQuickFields('Logradouro', [$logradouro_id$button_novoLogradouro]);
  10. ?>


Não aparece o botão, mesmo que insira em uma linha única com o addQuickField.
DC

Meus agradecimentos ao amigo Marcelo Gomes, meu ajudou muito!!! Depois de um dia inteiro tentando adicionar um link em um formulário tipo aqueles de Declaro que Li o Contrato e tal, sofrendo com o famigerado bootstrapFormWrapper from hell que muda os metodos de addField. Quase tudo que é gerado pelo Adianti Studio vem com esse bootstrapFormWrapper mas a maioria dos exemplos de form do tutor nao usam essa coisa.... Obrigado amigos!