Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
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. ?>