Problema com filtro Estou com um problema na hora de fazer um filtro em uma listagem Somente neste arquivo que ocorre o erro e não estou conseguindo ver qual o erro no código. Entra na listagem normalmente, mas quando faço um filtro ele da o erro e preciso deslogar e logar novamente para poder acessar a página. Obrigado ( ! ) Fatal error: Uncaught TypeError: Argument 1 passed to AdiantiDatabaseTCriter...
TB
Problema com filtro  
Estou com um problema na hora de fazer um filtro em uma listagem
Somente neste arquivo que ocorre o erro e não estou conseguindo ver qual o erro no código.

Entra na listagem normalmente, mas quando faço um filtro ele da o erro e preciso deslogar e logar novamente para poder acessar a página.

Obrigado

( ! ) Fatal error: Uncaught TypeError: Argument 1 passed to AdiantiDatabaseTCriteria::add() must be an instance of AdiantiDatabaseTExpression, instance of stdClass given, called in D:wamp64wwwppconnectpololibadiantibaseAdiantiStandardCollectionTrait.php on line 297 and defined in D:wamp64wwwppconnectpololibadiantidatabaseTCriteria.php on line 84
( ! ) TypeError: Argument 1 passed to AdiantiDatabaseTCriteria::add() must be an instance of AdiantiDatabaseTExpression, instance of stdClass given, called in D:wamp64wwwppconnectpololibadiantibaseAdiantiStandardCollectionTrait.php on line 297 in D:wamp64wwwppconnectpololibadiantidatabaseTCriteria.php on line 84
Call Stack
# Time Memory Function Location
1 0.0001 411072 {main}( ) ...engine.php:0
2 0.0790 689944 TApplication::run( ) ...engine.php:68
3 0.0794 700816 AdiantiCoreAdiantiCoreApplication::run( ) ...engine.php:27
4 0.1245 1012152 CalendarioList->show( ) ...AdiantiCoreApplication.php:82
5 0.1245 1012152 CalendarioList->show( ) ...AdiantiStandardCollectionTrait.php:421
6 0.1245 1012152 CalendarioList->run( ) ...TPage.php:213
7 0.1245 1012528 call_user_func:{D:wamp64wwwppconnectpololibadianticontrolTPage.php:59} ( ) ...TPage.php:59
8 0.1245 1012528 CalendarioList->onSearch( ) ...TPage.php:59
9 0.1245 1013776 CalendarioList->onReload( ) ...AdiantiStandardCollectionTrait.php:218
10 0.1260 1062856 AdiantiDatabaseTCriteria->add( ) ...AdiantiStandardCollectionTrait.php:297

<php
 
  1. <?php
  2. /**
  3. * CalendarioList Listing
  4. * @author <your name here>
  5. */
  6. class CalendarioList extends TPage
  7. {
  8. protected $form; // registration form
  9. protected $datagrid; // listing
  10. protected $pageNavigation;
  11. protected $formgrid;
  12. protected $deleteButton;
  13. use Adianti\base\AdiantiStandardListTrait;
  14. /**
  15. * Page constructor
  16. */
  17. public function __construct()
  18. {
  19. parent::__construct();
  20. $this->setDatabase('ppconnectpolo'); // defines the database
  21. $this->setActiveRecord('Calendario'); // defines the active record
  22. $this->setDefaultOrder('data_prova', 'desc'); // defines the default order
  23. $this->setLimit(10);
  24. //$this->setCriteria($criteria); // define a standard filter
  25. $this->addFilterField('data_prova', 'like', 'data'); // filterField, operator, formField
  26. $this->addFilterField('disciplinas_id', '=', 'disciplinas_id'); // filterField, operator, formField
  27. $this->addFilterField('turmas_id', '=', 'turmas_id'); // filterField, operator, formField
  28. // creates the form
  29. $this->form = new BootstrapFormBuilder('form_search_Calendario');
  30. $this->form->setFormTitle('Calendário de Provas');
  31. // create the form fields
  32. $data_prova = new TEntry('data_prova');
  33. $disciplinas_id = new TDBCombo('disciplinas_id', 'ppconnectpolo', 'Disciplinas', 'id', 'nome');
  34. //$turmas_id = new TDCombo('turmas_id', 'ppconnectpolo', 'Turmas', 'id', 'nome');
  35. $turmas_id = new TDBCombo('turmas_id', 'ppconnectpolo', 'Turmas', 'id', '{cursos->nome} - {nome}');
  36. // add the fields
  37. $this->form->addFields( [ new TLabel('Data') ], [ $data_prova ] );
  38. $this->form->addFields( [ new TLabel('Disciplina') ], [ $disciplinas_id ] );
  39. $this->form->addFields( [ new TLabel('Turma') ], [ $turmas_id ] );
  40. // set sizes
  41. $data_prova->setSize('100%');
  42. $disciplinas_id->setSize('100%');
  43. $turmas_id->setSize('100%');
  44. // keep the form filled during navigation with session data
  45. $this->form->setData( TSession::getValue(__CLASS__.'_filter_data') );
  46. // add the search form actions
  47. $btn = $this->form->addAction(_t('Find'), new TAction([$this, 'onSearch']), 'fa:search');
  48. $btn->class = 'btn btn-sm btn-primary';
  49. $btnAtualizar = $this->form->addAction('Atualizar Calendário', new TAction([$this, 'onAtualizarCalendario']), 'fa:plus green');
  50. $btnAtualizar->class = 'btn btn-sm btn-success';
  51. // creates a Datagrid
  52. $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
  53. $this->datagrid->style = 'width: 100%';
  54. $this->datagrid->datatable = 'true';
  55. // $this->datagrid->enablePopover('Popover', 'Hi <b> {name} </b>');
  56. // creates the datagrid columns
  57. //$column_id = new TDataGridColumn('id', 'Id', 'right');
  58. $column_data_prova = new TDataGridColumn('data_prova', 'Data', 'center');
  59. $column_data_geracao = new TDataGridColumn('data_geracao_prova', 'Data de Geração', 'center');
  60. $column_descricao = new TDataGridColumn('descricao', 'Descricao', 'left');
  61. $column_disciplinas_id = new TDataGridColumn('disciplinas->nome', 'Disciplina', 'left');
  62. $column_turmas_id = new TDataGridColumn('{turmas->cursos->nome} - {turmas->nome}', 'Turma', 'left');
  63. // add the columns to the DataGrid
  64. //$this->datagrid->addColumn($column_id);
  65. $this->datagrid->addColumn($column_data_prova);
  66. $this->datagrid->addColumn($column_turmas_id);
  67. $this->datagrid->addColumn($column_disciplinas_id);
  68. $this->datagrid->addColumn($column_data_geracao);
  69. $this->datagrid->addColumn($column_descricao);
  70. $column_data_prova->setTransformer(array($this, 'formatDate'));
  71. $column_data_geracao->setTransformer(array($this, 'formatDate'));
  72. //$action1 = new TDataGridAction(['CalendarioForm', 'onEdit'], ['id'=>'{id}']);
  73. //$action2 = new TDataGridAction([$this, 'onDelete'], ['id'=>'{id}']);
  74. //$this->datagrid->addAction($action1, _t('Edit'), 'far:edit blue');
  75. //$this->datagrid->addAction($action2 ,_t('Delete'), 'far:trash-alt red');
  76. // create the datagrid model
  77. $this->datagrid->createModel();
  78. // creates the page navigation
  79. $this->pageNavigation = new TPageNavigation;
  80. $this->pageNavigation->setAction(new TAction([$this, 'onReload']));
  81. $panel = new TPanelGroup('', 'white');
  82. $panel->add($this->datagrid);
  83. $panel->addFooter($this->pageNavigation);
  84. // header actions
  85. $dropdown = new TDropDown(_t('Export'), 'fa:list');
  86. $dropdown->setPullSide('right');
  87. $dropdown->setButtonClass('btn btn-default waves-effect dropdown-toggle');
  88. $dropdown->addAction( _t('Save as CSV'), new TAction([$this, 'onExportCSV'], ['register_state' => 'false', 'static'=>'1']), 'fa:table blue' );
  89. $dropdown->addAction( _t('Save as PDF'), new TAction([$this, 'onExportPDF'], ['register_state' => 'false', 'static'=>'1']), 'far:file-pdf red' );
  90. $panel->addHeaderWidget( $dropdown );
  91. // vertical box container
  92. $container = new TVBox;
  93. $container->style = 'width: 100%';
  94. // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  95. $container->add($this->form);
  96. $container->add($panel);
  97. parent::add($container);
  98. }
  99. private function isTutor(){
  100. TTransaction::open('ppconnectpolo'); // open a transaction
  101. $repositorio = new TRepository('SystemUserGroup');
  102. $criterio = new TCriteria;
  103. $criterio->add(new TFilter ('system_user_id', '=', TSession::getValue('userid')));
  104. $grupos = $repositorio->load($criterio);
  105. TTransaction::close();
  106. if($grupos){
  107. foreach($grupos as $grupo){
  108. if($grupo->system_group_id == 5) // tutor
  109. return true;
  110. }
  111. }
  112. return false;
  113. }
  114. private function isAdmin(){
  115. TTransaction::open('ppconnectpolo'); // open a transaction
  116. $repositorio = new TRepository('SystemUserGroup');
  117. $criterio = new TCriteria;
  118. $criterio->add(new TFilter ('system_user_id', '=', TSession::getValue('userid')));
  119. $grupos = $repositorio->load($criterio);
  120. TTransaction::close();
  121. if($grupos){
  122. foreach($grupos as $grupo){
  123. if($grupo->system_group_id == 4 /*coordenador de polo */ ||
  124. $grupo->system_group_id == 1 ) // administrador
  125. return true;
  126. }
  127. }
  128. return false;
  129. }
  130. public function onAtualizarCalendario(){
  131. if($this->isAdmin()){
  132. // echo "admin";
  133. TTransaction::open('ppconnectpolo'); // open a transaction
  134. $repositorio_turmas = new TRepository('turmas');
  135. $criterio_turmas = new TCriteria;
  136. $criterio_turmas->add(new TFilter ('id', '>', 0));
  137. $turmas = $repositorio_turmas->load($criterio_turmas);
  138. TTransaction::close();
  139. // var_dump($turmas);
  140. if($turmas){
  141. foreach($turmas as $turma){
  142. // var_dump($turma);
  143. TTransaction::open('ppconnectpolo'); // open a transaction
  144. $repositorio_dc = new TRepository('disciplinasdocurso');
  145. $criterio_dc = new TCriteria;
  146. $criterio_dc->add(new TFilter ('curso_id', '=', $turma->cursos_id));
  147. $dcs = $repositorio_dc->load($criterio_dc);
  148. // var_dump($dcs);
  149. TTransaction::close();
  150. foreach($dcs as $dc){
  151. // var_dump($dc);
  152. $this->atualizaProvas($dc, $turma);
  153. }
  154. }
  155. }
  156. }
  157. if($this->isTutor())
  158. echo "tutor";
  159. $this->onReload();
  160. }
  161. //passa a disciplina e a turma
  162. private function atualizaProvas($dc, $turma){
  163. // var_dump($dc);
  164. // var_dump($turma);
  165. $location = 'http://localhost/ppconnect/rest.php';
  166. $parameters = array();
  167. $parameters['class'] = 'ProvasService';
  168. $parameters['method'] = 'loadAll';
  169. $parameters['filters'] = [['disciplinas_id', '=', $dc->disciplinas_id], ['turmas_id', '=', $turma->id]];
  170. $url = $location . '?' . http_build_query($parameters);
  171. $obj= json_decode( file_get_contents($url)) ;
  172. // var_dump($obj);
  173. if(!empty($obj->data)){
  174. try{
  175. $this->setActiveRecord('Calendario');
  176. TTransaction::open('ppconnectpolo');
  177. $dados = new Calendario;
  178. foreach($obj->data as $ob){
  179. // var_dump($ob);
  180. $dados->id = $ob->id;
  181. $dados->disciplinas_id = $ob->disciplinas_id;
  182. $dados->turmas_id = $ob->turmas_id;
  183. $dados->data_prova = $ob->data_prova;
  184. $dados->data_geracao_prova = $ob->data_geracao;
  185. $dados->descricao = $ob->nome;
  186. $dados->store();
  187. }
  188. TTransaction::close();
  189. return true;
  190. } catch (Exception $e){
  191. new TMessage('error', $e->getMessage());
  192. return false;
  193. }
  194. }
  195. $this->setActiveRecord('Calendario');
  196. $this->onReload();
  197. return false;
  198. }
  199. public function formatDate($date, $object)
  200. {
  201. if(!empty($date)){
  202. $dt = new DateTime($date);
  203. return $dt->format('d/m/Y');
  204. }
  205. return ' ';
  206. }
  207. }
  208. ?>

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

 
  1. <?php
  2. // troque
  3. //$this->addFilterField('data_prova', 'like', 'data'); // filterField, operator, formField
  4. //por
  5. $this->addFilterField('data_prova', 'like', 'data_prova'); // filterField, operator, formField
  6. ?>