Controle de status Bom dia, pessoal. Estou fazendo um controle de status de mesas. Dando uma olhada nos exemplos do tutor optei por usar RadioGroup com setUseButton. Meu código inicial: ...
CS
Controle de status  
Bom dia, pessoal. Estou fazendo um controle de status de mesas. Dando uma olhada nos exemplos do tutor optei por usar RadioGroup com setUseButton.

Meu código inicial:
 
  1. <?php
  2. public function __construct()
  3. {
  4. parent::__construct();
  5. // creates the form
  6. $this->form = new TQuickForm('form_search_OprComanda');
  7. $this->form->class = 'tform'; // change CSS class
  8. $this->form = new BootstrapFormWrapper($this->form);
  9. $this->form->style = 'display: table;width:100%'; // change style
  10. $this->form->setFormTitle('OprComanda');
  11. // create the form fields
  12. $radio = new TRadioGroup('radio');
  13. $radio->setLayout('horizontal');
  14. $radio->setUseButton();
  15. $radio->setBreakItems(5);
  16. TTransaction::open('sigaw');
  17. $mesas = new TRepository('GerMesa');
  18. $mesas_obj = $mesas->load();
  19. $items_radio = array();
  20. foreach($mesas_obj as $mesa)
  21. {
  22. $items_radio[$mesa->id] = $mesa->id;
  23. }
  24. asort($items_radio);
  25. $radio->addItems($items_radio);
  26. foreach ($radio->getLabels() as $key => $label)
  27. {
  28. $label->setTip("Mesa $key");
  29. $label->setSize(40);
  30. }
  31. $this->form->addQuickField('', $radio, 50 );
  32. ?>


Gostaria de uma ajuda:
- Esta certa a maneira de chamada na função __construct ou teria que ser na onReload?
- Utilizando o Radio eu consigo colorir cada button com uma cor de acordo com o status (ocupado ou livre)?
- Utilizando o Radio consigo passar uma action (edit ou new) de acordo com o click em cada button separado?
Ou o radio não seria interessante para esta situação e deveria usar outro componente?

[]'s

Stclara.

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (3)


NR

1 - A função onReload é utilizada mais em páginas com datagrid. Pode manter no construtor.
2 - Se alterar a cor do botão acho que não vai ficar visível qual está selecionado. Mas é possível:
 
  1. <?php
  2. foreach ($radio->getLabels() as $key => $label)
  3. {
  4. $label->style = 'color: red';//fonte vermelha
  5. //$label->style = 'background: red';//fundo vermelho
  6. }
  7. ?>

3 - Você vai ter que usar a função setExitAction e tratar o valor selecionado.
4 - Dependendo da interface que você deseja montar talvez seja interessante criar um html específico e usar com o THtmlRenderer. Também existe a opção de usar botões, veja o exemplo:
adianti.com.br/framework_files/tutor/index.php?class=FormButtonStyle

Ainda, se continuar utilizando o radio, considere utilizar o TDBRadioGroup para não ter que preencher as opções manualmente.
CS

Obrigado, Nataniel. Mas como adicionar os Buttons de forma dinamica de acordo com o resultado obtido de $mesas = new TRepository('GerMesa');?


[]'s
NR

A classe TQuickForm possui a função addRow, que retorna um instância de TTableRow. Desse modo você consegue criar linhas e colunas e adcionar o conteúdo que quiser:
 
  1. <?php
  2. $row = $this->form->addRow();
  3. $row->addCell($button1);
  4. $row->addCell($button2);
  5. $row = $this->form->addRow();
  6. $row->addCell($button3);
  7. $row->addCell($button4);
  8. ?>