TF
Como enviar um ID através de um botão
Fechado
Bom dia galera,
Estou com uma dúvida. Alguém pode me explicar como funciona o mecanismo desse exemplo (www.adianti.com.br/framework_files/tutor/index.php?class=ProductCata). Tenho uma relação de mesas em um restaurante, onde a disponho como botões, conforme figura em anexo. Gostaria que a clicar numa mesa específica, abrirá uma janela com seus dados, onde foram consultados através de seu ID. Minha dúvida é com,o fazer para enviar seu id para a janela. O exemplo do Adianti é a solução, porém não entendi.
Estou com uma dúvida. Alguém pode me explicar como funciona o mecanismo desse exemplo (www.adianti.com.br/framework_files/tutor/index.php?class=ProductCata). Tenho uma relação de mesas em um restaurante, onde a disponho como botões, conforme figura em anexo. Gostaria que a clicar numa mesa específica, abrirá uma janela com seus dados, onde foram consultados através de seu ID. Minha dúvida é com,o fazer para enviar seu id para a janela. O exemplo do Adianti é a solução, porém não entendi.
Oi Tiago
Vamos lá para passar o id para o botão, vamos voltar ao exemplo que indicou o código está no catalogo.html nessa linha:
Dentro do seu código quando cria os botões passe o id para o link como no exemplo.
Felipe, sua sugestão ate deu certo. Mas tive que ajustá-lo ao meu código e ao invés de ter um TButton tive que criar um TElement('a'). O problema é que ao clicar no link ate a janela, mas não fica em segundo plano. Estou anexando código.
function __construct(){
parent::__construct();
$this->form = new TForm('form_gerenciamento_mesas');
$this->form->class = 'tform'; //Classe CSS
$this->form->style = 'width: 650px';
(...)
//CAMPOS MESAS
$frame = new TFrame;
$frame->setLegend('Mesas');
$tabela_imagem = new TTable;
$divImg = new TElement('div');
$divImg->style = "width:630px;height:300px;";
$idFuncionamento = TSession::getValue('id');//Pega id do funcionamento para consultar mesa
//$tabelaMesas = new TTable;
if (TSession::getValue('num_mesas')){
for($i = 1; $i <= TSession::getValue('num_mesas'); $i++){
$frameMesas = new TFrame;
$frameMesas->setLegend("$i");
$frameMesas->style = "width:72px;
height:72px;
padding-top: 0px;
margin-left: 20px;
margin-rigth: 20px;
margin-button: 10px;
float:left;";
//$frameMesas->add($tabelaMesas);
$divImg->add($frameMesas);
//Consulta ID mesa
try {
TTransaction::open('bdCardapio');
$repositorioMesa = new TRepository('Mesa');
$criterioMesa = new TCriteria;
$dataFuncionamentoUs = TDate::date2us($dataFuncionamento);
$criterioMesa->add(new TFilter('num_mesa', '=', $i));
$criterioMesa->add(new TFilter('status', '=', '0'));
$criterioMesa->add(new TFilter('id_funcionamento', '=', $idFuncionamento));
$dadosMesa = $repositorioMesa->load($criterioMesa);
$idMesa = array();
foreach ($dadosMesa as $value){
$idMesa[$i] = $value->id;
}
TTransaction::close();
}
catch (Exception $e){
new TMessage('error', 'Error ' . $e->getMessage());
TTransaction::rollback();
}
//Fim
$this->imgCampo = new TElement('img');
$this->imgCampo->src = "lib/adianti/images/mesa_fechada.png";
$mesas = new TElement('a');
$mesas->href = "index.php?class=HistoricoMesa&&method=onEdit&key=$idMesa[$i]";
$mesas->add($this->imgCampo);
$frameMesas->add($mesas);
}
//$tabelaMesas->addRowSet($mesas);
}
$tabela_imagem->addRowSet(array( $divImg));
$frame->add($tabela_imagem);
$tabela->addRowSet(array($frame));
Para o a virar botão.
$mesas->setClass('btn btn-default btn-success');
Ficar em segundo plano ?
Não entendi. Gostaria que a janela ficasse por cima do form (ela em 1º plano). Acho que só fica assim se usar o TButton e adicionar uma action. Usando o TElement('button') não fica. Utilizo o TElement para informar o ID da mesa através do href, pois se passo o ID por parâmetro através da Action só envia o ultimo ID.
Não é nada disso, basta vc estender a classe invés de TPage colocar TWindow e está ficará por cima como uma popup da forma como vc quer.
Como o href do Element('a') está na classe "ControleCaixa", ao clicá-lo gostaria que abrisse a classe "HistoricoMesa" que estende de uma TWindow, ele faz isso, mas não como popup e sim abre uma tela vazia e a janela "HistoricoMesa" como popup. Gostaria muito que abrisse por cima da Page "ControleCaixa", entedeu? És meu problema.
Está assim certo.
class HistoricoMesa extends TWindow
Faltou vc dizer para o link que ele é do tipo ( generator="adianti" )
$mesas->href = "index.php?class=HistoricoMesa&&method=onEdit&key=$idMesa[$i] generator=\"adianti\" ";
Testa ai !!!
Felipe, agora sim deu certo.
Fiz dessa forma:
$mesas = new TElement('a');
$mesas->{'class'} = 'btn btn-default btn-sm dropdown-toggle';
$mesas->generator = "adianti";
$mesas->href = "index.php?class=HistoricoMesa&&method=onEdit&key=$idMesa[$i]";
$mesas->add($this->imgCampo);
Cara, eu fico com dificuldades de conseguir mais material do Adianti e aprender esses detalhes. Nunca imaginei a existência desse generator. Ele é próprio do Adianti ou é um atributo da tag "a"?
Desde já muito agradecido. Me ajudou bastante.
Ai como ficou bonito o código bem melhor do que falei.
Essa parte que fala do generator está no livro, mas com o tempo irá se acostumar. toda a documentação do framework está disponível no site.
www.adianti.com.br/api-framework-x
Livro e video aulas são as melhores fontes para quem começa.
Abraços
Felipe Cortez