Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Bom dia comunidade Adianti, Estou com uma pequena dúvida. Tenho um formulário que contém um TDBCombo, gostaria saber como faço para pegar o valor do ID do item selecionado e passar seu valor para outro formulário. Não estou sabendo pegar o valor do campo selecionado no TDBCombo. $categoria = new TDBCombo('categoria', 'bdCardapio', 'CategoriaPrato', 'id', 'nome'); ...
TF
 
Bom dia comunidade Adianti,

Estou com uma pequena dúvida. Tenho um formulário que contém um TDBCombo, gostaria saber como faço para pegar o valor do ID do item selecionado e passar seu valor para outro formulário. Não estou sabendo pegar o valor do campo selecionado no TDBCombo.

$categoria = new TDBCombo('categoria', 'bdCardapio', 'CategoriaPrato', 'id', 'nome');


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


MG

Tiago

Você deve implementar uma action (onChangeAction).
TF

Marcelo Gomes, vc pode enviar a dica de como implementá-la?
MG

Tiago, segue alguns fragmentos de um código que utilizo:

  1. <?php
  2. public function __construct() 
  3. {
  4.         ....
  5.         $cbo_action = new TAction(array($this'onChangeAction'));
  6.         $centrocustoid->setChangeAction($cbo_action);
  7.         .....
  8. }
  9.     static function onChangeAction($param)
  10.     {
  11.         try
  12.         {
  13.             TApplication::postData('form_funcionario_homeoffice''FuncionarioHomeOffice''onCarregarGrid');            
  14.         }
  15.         catch (Exception $e)
  16.         {
  17.             $msg 'Erro : ' $e->getCode() .  ' - Mensagem : ' $e->getMessage(); 
  18.             new TMessage('error',$msg);
  19.         }
  20.     }
  21. ?>
TF

Não entendi seu código. Queria saber se tem como pegar o valor do TDBCombo no próprio __construct, daí passaria seu valor via $action->setParameter para o outro formulário.
MG

Tiago
Vc consegue pegar o valor quando existe uma ação.
Neste caso quando você clica sobre o cbo, aciona-se onChangeAction.
Antes de capturar a informação, existe uma ação de "selecionar"....
Até mesmo programação para desktop é preciso uma ação num componente Combo, checkbox, radio e etc.
TF

Marcelo, eu consegui implementando essa função

public function editaCategoria($param){

$idCategoria['key'] = $param['categoria'];
TApplication::loadPage('CategoriaWindow', 'onEdit', (array) $idCategoria);
}

Pego o valor da categoria e envio via loadPage. O que acha? Será um código elegante?
MG

Tiago
$idCategoria é um TCombo?
TF

Recebe o valor selecionado do TCombo. O pior é q deu certo..kkkkk.
MG

E no "__construct" como você implementou a chamada para editaCategoria()?
TF

Segue código de criação do botão:
//botão add categoria

$addCategoria = new TButton('addCategoria');
$action = new TAction(array($this, 'editaCategoria'));
$addCategoria->setAction(($action));
$addCategoria->setImage('ico_config.png');
$addCategoria->popover = 'true';
$addCategoria->popcontent = 'Configurar categoria';
MG

Tiago

Não entendi. Você tinha um TDBCombo, certo?

Você criou um botão para pegar o valor do TDBCombo após selecioná-lo?

Foi isso?
TF

Isso mesmo, Marcelo Gomes.
Pego seu ID, através do botão, e envio pra uma TWindow.
Estou com um novo problema. Ao enviar, os dados do form pai, são apagados seus dados, ao retornar pra este, simplesmente fechando a janela, seus dados voltam vazios.
MG

Tiago
Posta o código!

Geralmente capturamos o conteúdo do form através do método "getData()" e depois preenchemos o form com "setData()";

  1. <?php
  2.     
  3.     ...
  4.     $data $this->form->getData();
  5.     .....
  6.     $this->form->setData($data);
  7. ?>
TF

Desculpe a demora pra responder. Segue código.

  1. <?php
  2. class PratoForm extends Configuracao{
  3.     
  4.     private $form;
  5.     private $dataGrid
  6.     private $loaded;    
  7.     private $imgFoto;
  8.     
  9.     function __construct(){
  10.         
  11.         parent::__construct();
  12.                 
  13.         $this->form = new TForm('form_cadastro_cardapio');
  14.         $this->form->class 'tform'//Classe CSS
  15.         $this->form->style 'width: 710px';
  16.          
  17.         $tabela = new TTable;
  18.         $tabela->width '100%';
  19.         $tabela_botoes = new TTable;
  20.         
  21.         $this->form->add($tabela);
  22.                 
  23.         $id   = new TEntry('id');
  24.         $cod = new TEntry('cod');
  25.         $nome = new TEntry('nome');
  26.         $preco = new TEntry('preco');
  27.         $categoria = new TDBCombo('categoria''bdCardapio''CategoriaPrato''id''nome');
  28.         $cardapio = new TEntry('cardapio');
  29.         $nomeImagem = new TFile('imagem'); 
  30.         $dt_cadastro = new TDate('dt_cadastro');
  31.                 
  32.         // configuracao de campo
  33.         $id->setSize(40);
  34.         $id->setEditable(false);
  35.         $cod->setSize(50);
  36.         $cod->setMask('99999');
  37.         $nome->setSize(280);
  38.         $preco->setSize(70);
  39.         $preco->setNumericMask(2,',','.');
  40.         $categoria->setSize(130);
  41.         $cardapio->setSize(150);
  42.         $cardapio->setEditable(false);
  43.         $dt_cadastro->setSize(80);
  44.         $dt_cadastro->setEditable(false);
  45.        
  46.         // Titulo do formulario
  47.         $row $tabela->addRow();
  48.         $row->class 'tformtitle';
  49.         $cell $row->addCell(new TLabel('Cadastro de pratos'));
  50.         $cell->colspan=2;
  51.         
  52.         //botão add categoria
  53.         $addCategoria = new TButton('addCategoria');
  54.         $action = new TAction(array('CategoriaWindow''onEdit')); 
  55.         $this->form->setFields(array($categoria));
  56.         $addCategoria->setAction(($action));
  57.         $addCategoria->setImage('ico_config.png');
  58.         $addCategoria->popover 'true';
  59.         $addCategoria->popcontent 'Configurar categoria';
  60.         
  61.         //adiciona campos da tabela
  62.         $tabela->addRowSet(array(new TLabel('ID:'), $id, new TLabel('Código:'), $cod, new TLabel('Nome:'), $nome, new TLabel('Preço:'), $preco));
  63.         $tabela->addRowSet(array(new TLabel('Categoria:'), $categoria$addCategoria, new TLabel('Cardápio:'), $cardapio, new TLabel('Data de cadastro:'), $dt_cadastro));
  64.                    
  65.         //CAMPOS IMAGENS  
  66.         
  67.         $frame = new TFrame;
  68.         $frame->setLegend('<b>Imagem</b>');
  69.         
  70.         $tabela_imagem = new TTable;
  71.                                               
  72.         $nomeImagem->setSize(200);
  73.         
  74.         // cria botão postar imagem
  75.         $postImagem = new TButton('imagem');
  76.         $postImagem->setAction(new TAction(array($this'onEdit')), 'Postar');
  77.         $postImagem->setImage('ico_up.png');
  78.                                 
  79.         $divImg = new TElement('div');
  80.         
  81.         $this->imgFoto = new TElement('img');
  82.         $this->imgFoto->src "app/imgpratos/churrasco.jpg";
  83.         $this->imgFoto->style "width:300;height:200px";
  84.         
  85.         
  86.         $this->linka = new TElement('a');
  87.         $this->linka->href "";
  88.         $this->linka->add($this->imgFoto);
  89.         
  90.         
  91.         $divImg->add($this->linka);
  92.                                         
  93.         $tabela_imagem->addRowSet(array(new TLabel('Imagem'), $nomeImagem$postImagem$divImg));
  94.         
  95.         $frame->add($tabela_imagem);
  96.         
  97.         $row $tabela->addRow();
  98.         $row->class 'tformaction';
  99.         $cell $row->addCell($frame);
  100.         $cell->colspan=2;
  101.         
  102.         //FIM CAMPOS IMGAGENS
  103.         
  104.         // cria botão novo
  105.         $novoPrato = new TButton('novoPrato');
  106.         $novoPrato->setAction(new TAction(array($this'onEdit')), 'Novo');
  107.         $novoPrato->setImage('ico_new.png');
  108.         
  109.         // cria botões salvar
  110.         $salvarPrato = new TButton('save');
  111.         $salvarPrato->setAction(new TAction(array($this'onSave')), 'Salvar');
  112.         $salvarPrato->setImage('ico_save.png');
  113.         
  114.         // cria botão deleta
  115.         $deletaPrato = new TButton('deletaCardapio');
  116.         $deletaPrato->setAction(new TAction(array($this'onDelete')), 'Deletar');
  117.         $deletaPrato->setImage('ico_delete.png');
  118.         $voltar = new TButton('back');
  119.         $voltar->setAction(new TAction(array($this'voltar')), 'Voltar');
  120.         $voltar->setImage('ico_back.png');
  121.        
  122.         $row $tabela_botoes->addRow();
  123.         $row->addCell($novoPrato);
  124.         $row->addCell($salvarPrato);        
  125.         $row->addCell($deletaPrato);        
  126.         $row->addCell($voltar);
  127.                         
  128.         $row $tabela->addRow();
  129.         $row->class 'tformaction';
  130.         $cell $row->addCell($tabela_botoes);
  131.         $cell->colspan=2;
  132.         //Montagem de dataGrid e botões de listagem 
  133.         
  134.         $row $tabela->addRow();
  135.         $row->class 'tformsection';
  136.         $row->addCell( new TLabel('<b>Pratos</b>'))->colspan 2;
  137.         
  138.         $tabelaPrato = new TTable;
  139.         
  140.         $nomePrato = new TEntry('nomePrato');
  141.         $nomePrato->setSize(300);
  142.                 
  143.         // cria botões buscar
  144.         $busca_prato = new TButton('find');
  145.         $busca_prato->setAction(new TAction(array($this'onSearch')), 'Buscar');
  146.         $busca_prato->setImage('ico_find.png');
  147.        
  148.         $tabelaPrato->addRowSet(array(new TLabel('Nome'), $nomePrato$busca_prato));
  149.                 
  150.         $this->dataGrid = new TDataGrid;
  151.         $this->dataGrid->setHeight(280);
  152.         
  153.         $codPrato = new TDataGridColumn('cod''Código''rigth'60);
  154.         $nome_prato = new TDataGridColumn('nome''Nome''rigth'440);
  155.         $precoPrato  = new TDataGridColumn('preco''Preço''rigth'100);
  156.         $categoriaPrato = new TDataGridColumn('categoria''Categoria''rigth'200);
  157.         
  158.         $this->dataGrid->addColumn($codPrato);
  159.         $this->dataGrid->addColumn($nome_prato);
  160.         $this->dataGrid->addColumn($precoPrato);
  161.         $this->dataGrid->addColumn($categoriaPrato);
  162.                
  163.         $action1 = new TDataGridAction(array($this'onEdit'));
  164.         $action1->setLabel('Edit');
  165.         $action1->setImage('ico_edit.png');
  166.         $action1->setField('id');
  167.         
  168.         $action2 = new TDataGridAction(array($this'onDelete'));
  169.         $action2->setLabel('Delete');
  170.         $action2->setImage('ico_delete.png');
  171.         $action2->setField('id');
  172.         
  173.         $this->dataGrid->addAction($action1);
  174.         $this->dataGrid->addAction($action2);
  175.         
  176.         $this->dataGrid->createModel();
  177.         
  178.         $row $tabelaPrato->addRow();
  179.         $row->addCell($this->dataGrid);                
  180.         
  181.         $row $tabela->addRow();
  182.         $row->class 'tformaction';
  183.         $cell $row->addCell($tabelaPrato);
  184.         $cell->colspan=2;
  185.                                             
  186.         $this->form->setFields(array($id$cod$nome$preco$cardapio$categoria$addCategoria$dt_cadastro$salvarPrato$novoPrato$deletaPrato$voltar$postImagem$nomePrato$busca_prato));
  187.         
  188.         $vbox = new TVBox;
  189.         $vbox->add($this->form);
  190.         
  191.         parent::add($vbox);
  192.     }
  193.    function onEdit($param){
  194.         try{
  195.             if (isset($param['key'])){
  196.                 
  197.                 $key $param['key'];
  198.                                                
  199.                 TTransaction::open('bdCardapio');
  200.                 $objeto = new Pratos($key);        
  201.                 //consulta o nome do cardapio através de id vindo de sessao
  202.                 $rCardapio = new TRepository('Cardapios');
  203.                 $criterio = new TCriteria;   
  204.                 $idCardapio TSession::getValue('idCardapio');//pega valor do id de cardapio
  205.                 TSession::setValue('idPrato'$key); //pega id do cardapio atual
  206.                 
  207.                 $criterio->add(new TFilter('id''='"$idCardapio"));
  208.                 $cardapios $rCardapio->load($criterio);
  209.                 
  210.                 foreach ($cardapios as $cardapio) {
  211.                     $objeto->cardapio $cardapio->nome;
  212.                 }
  213.                 
  214.                 $objeto->preco parent::converteFloatReal($objeto->preco);  
  215.                 
  216.                 $imagem $objeto->imagem;
  217.                 echo $imagem;  
  218.                 $this->imgFoto->src "../app/imagemPratos/$imagem.jpg";        
  219.                 $this->linka->href $this->imgFoto->src;
  220.                 
  221.                 $this->form->setData($objeto); 
  222.                 
  223.                 TTransaction::close();           
  224.             }    
  225.             else{
  226.                 $key '';//atribui um vazio ao key antes de ser preenchido pelo $param
  227.                 if(TSession::getValue('idPrato')){
  228.                      if (isset($param['key'])){ $key $param['key'];}
  229.                                                                    
  230.                     TTransaction::open('bdCardapio');
  231.                     $objeto = new Pratos($key);        
  232.                     //consulta o nome do cardapio através de id vindo de sessao
  233.                     $rCardapio = new TRepository('Cardapios');
  234.                     $criterio = new TCriteria;   
  235.                     $idCardapio TSession::getValue('idCardapio');//pega valor do id de cardapio
  236.                     TSession::setValue('idPrato'$key); //pega id do cardapio atual
  237.                     $criterio->add(new TFilter('id''='"$idCardapio"));
  238.                     $cardapios $rCardapio->load($criterio);
  239.                     foreach ($cardapios as $cardapio) {
  240.                         $objeto->cardapio $cardapio->nome;
  241.                     }
  242.                     //$objeto->preco = parent::converteFloatReal($objeto->preco);  
  243.                     $this->form->setData($objeto);   
  244.                     TTransaction::close();      
  245.                 }
  246.                 else{
  247.                     $this->form->clear();
  248.                     TSession::delValue('idPrato'); 
  249.                     TTransaction::open('bdCardapio');
  250.                     $objeto = new Pratos();        
  251.                     //consulta o nome do cardapio através de id vindo de sessao
  252.                     $rCardapio = new TRepository('Cardapios');
  253.                     $criterio = new TCriteria;   
  254.                     $idCardapio TSession::getValue('idCardapio');
  255.                     $criterio->add(new TFilter('id''='"$idCardapio"));
  256.                     $cardapios $rCardapio->load($criterio);
  257.                     foreach ($cardapios as $cardapio) {
  258.                         $objeto->cardapio $cardapio->nome;
  259.                     } 
  260.                     $this->form->setData($objeto);   
  261.                     TTransaction::close();           
  262.                 }                
  263.             }
  264.         }
  265.         catch (Exception $e){
  266.             new TMessage('error''<b>Error</b> ' $e->getMessage());            
  267.             TTransaction::rollback();
  268.         }                           
  269.     }