Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Como enviar um ID através de um botão Bom dia galera, Estou com uma dúvida. Alguém pode me explicar como funciona o mecanismo desse exemplo (http://www.adianti.com.br/framework_files/tutor/index.php?class=ProductCatalogView). 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 consulta...
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.

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


FC

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:
  1. <?php
  2. <a generator="adianti" class="btn btn-default btn-success" href="index.php?class=ProductCatalogView&method=onBuyClick&product_id={$id}">Click to buy</a>
  3.  ?>

Dentro do seu código quando cria os botões passe o id para o link como no exemplo.
TF

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));

FC

Para o a virar botão.
$mesas->setClass('btn btn-default btn-success');

Ficar em segundo plano ?
TF

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.
FC

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.
TF

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.
FC

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 !!!
TF

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.
FC

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