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

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto 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. ?>