Duvida com FilterFields Oi amigos, Estou com uma duvida com a utilização de filterfields Tenho um objeto que é um apontamento de produção, neste objeto eu guardo id do usuario que apontou, id a da ordem de serviço, e nao a descrição, na hora de mostrar um lista de apontamentos, eu utilizei o Studio, mas o grid para mostrar a descrição eu aprendi aqui no forum conforme o codigo abaixo, no entanto o filtro ...
CO
Duvida com FilterFields  
Oi amigos,

Estou com uma duvida com a utilização de filterfields

Tenho um objeto que é um apontamento de produção, neste objeto eu guardo id do usuario que apontou, id a da ordem de serviço, e nao a descrição, na hora de mostrar um lista de apontamentos, eu utilizei o Studio, mas o grid para mostrar a descrição eu aprendi aqui no forum conforme o codigo abaixo, no entanto o filtro está pelo id, o que torna muito complicado o processo, tem como modificar o filtro para ele aceitar a descrição?

 
  1. <?php
  2. public function __construct()
  3. {
  4. parent::__construct();
  5. parent::setDatabase('gestor'); // defines the database
  6. parent::setActiveRecord('Apontamento'); // defines the active record
  7. parent::setDefaultOrder('id', 'asc'); // defines the default order
  8. // parent::setCriteria($criteria) // define a standard filter
  9. //Aqui os filtros utilizam o id que está salvo na tabela, mas não dá para filtrar por id,
  10. // gostaria de filtar por SystemUser->login ou Ordem->numero ou Perda->descricao
  11. parent::addFilterField('system_user_id', 'like', 'system_user_id'); // filterField, operator, formField
  12. parent::addFilterField('ordem_id', 'like', 'ordem_id'); // filterField, operator, formField
  13. parent::addFilterField('quantidade', 'like', 'quantidade'); // filterField, operator, formField
  14. parent::addFilterField('perda_id', 'like', 'perda_id'); // filterField, operator, formField
  15. parent::addFilterField('dataAp', 'like', 'dataAp'); // filterField, operator, formField
  16. parent::addFilterField(
  17. // creates the form
  18. $this->form = new TQuickForm('form_search_Apontamento');
  19. $this->form->class = 'tform'; // change CSS class
  20. $this->form->style = 'display: table;width:100%'; // change style
  21. $this->form->setFormTitle('Apontamento');
  22. // create the form fields
  23. $system_user_id = new TEntry('system_user_id');
  24. $ordem_id = new TEntry('ordem_id');
  25. $quantidade = new TEntry('quantidade');
  26. $perda_id = new TEntry('perda_id');
  27. $dataAp = new TEntry('dataAp');
  28. // add the fields
  29. $this->form->addQuickField('Usuario', $system_user_id, 200 );
  30. $this->form->addQuickField('Ordem', $ordem_id, 200 );
  31. $this->form->addQuickField('Quantidade', $quantidade, 200 );
  32. $this->form->addQuickField('Perda', $perda_id, 200 );
  33. $this->form->addQuickField('Data', $dataAp, 200 );
  34. // keep the form filled during navigation with session data
  35. $this->form->setData( TSession::getValue('Apontamento_filter_data') );
  36. // add the search form actions
  37. $this->form->addQuickAction(_t('Find'), new TAction(array($this, 'onSearch')), 'fa:search');
  38. $this->form->addQuickAction(_t('New'), new TAction(array('ApontamentoForm', 'onEdit')), 'bs:plus-sign green');
  39. // creates a DataGrid
  40. $this->datagrid = new TDataGrid;
  41. $this->datagrid->style = 'width: 100%';
  42. $this->datagrid->datatable = 'true';
  43. // $this->datagrid->enablePopover('Popover', 'Hi {name} ');
  44. // Nas colunas do datagrid eu consigo alterar para o atributo correto
  45. $column_id = new TDataGridColumn('id', 'Id', 'right');
  46. $column_system_user_id = new TDataGridColumn('system_user->login', 'Usuario', 'right');
  47. $column_ordem_id = new TDataGridColumn('Ordem->numero', 'Ordem', 'right');
  48. $column_quantidade = new TDataGridColumn('quantidade', 'Quantidade', 'right');
  49. $column_perda_id = new TDataGridColumn('Perda->descricao', 'Perda Id', 'right');
  50. $column_qtde_perda = new TDataGridColumn('qtde_perda', 'Qtde Perda', 'right');
  51. $column_dataAp = new TDataGridColumn('dataAp', 'Dataap', 'left');
  52. // add the columns to the DataGrid
  53. $this->datagrid->addColumn($column_id);
  54. $this->datagrid->addColumn($column_system_user_id);
  55. $this->datagrid->addColumn($column_ordem_id);
  56. $this->datagrid->addColumn($column_quantidade);
  57. $this->datagrid->addColumn($column_perda_id);
  58. $this->datagrid->addColumn($column_qtde_perda);
  59. $this->datagrid->addColumn($column_dataAp);
  60. ?>


Agradeço a ajuda!!

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


NR

Claudio, você pode usar um subselect:
 
  1. <?php
  2. $perda_descricao = new TEntry('perda_descricao');
  3. parent::addFilterField('(select descricao from perda where id = perda_id)', 'like', 'perda_descricao');
  4. ?>