6
respostas

Paginação

Estou tendo problema na paginação quando clico para trocar de página. Aparece o seguinte:

Not Found
Cake\Network\Exception\NotFoundException

Controller:

public function index()
    {

        $this->paginate = [
            'contain' => ['Processos', 'Turmas', 'Responsaveis', 'Candidatos'],
        'limit'=>10
        ];
        $id =$this->Auth->user('id');
        $processos = $this->Inscricoes->Processos->find('list')->select(['id'])->where(['status = 1'])->first();
        $inscricoes = $this->paginate($this->Inscricoes->find()->where(['inscricoes.user_id = ' => $id])
                            ->matching('Processos', function ($q) use ($processos) {
                                            return $q->where(['processos.id =' => $processos]);
                                        }));

        $this->set(compact('inscricoes'));
        $this->set('_serialize', ['inscricoes']);
    }

Log:

[Cake\Network\Exception\NotFoundException] Not Found Request URL: /inscricoes/candidatos?page=2 Referer URL: http://localhost/cefet/inscricoes/candidatos Stack Trace: #0 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Controller\Controller.php(717): Cake\Controller\Component\PaginatorComponent->paginate(Object(App\Model\Table\ResponsaveisTable), Array) #1 C:\xampp\htdocs\cefet\src\Controller\AppController.php(37): Cake\Controller\Controller->paginate(Object(Cake\ORM\Query)) #2 C:\xampp\htdocs\cefet\src\Controller\InscricoesController.php(19): App\Controller\AppController->beforeFilter(Object(Cake\Event\Event)) #3 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Event\EventManager.php(414): App\Controller\InscricoesController->beforeFilter(Object(Cake\Event\Event)) #4 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Event\EventManager.php(391): Cake\Event\EventManager->_callListener(Array, Object(Cake\Event\Event)) #5 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Event\EventDispatcherTrait.php(78): Cake\Event\EventManager->dispatch(Object(Cake\Event\Event)) #6 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Controller\Controller.php(502): Cake\Controller\Controller->dispatchEvent('Controller.init...') #7 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Http\ActionDispatcher.php(114): Cake\Controller\Controller->startupProcess() #8 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Http\ActionDispatcher.php(93): Cake\Http\ActionDispatcher->_invoke(Object(App\Controller\InscricoesController)) #9 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Http\BaseApplication.php(78): Cake\Http\ActionDispatcher->dispatch(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #10 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Http\Runner.php(65): Cake\Http\BaseApplication->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner)) #11 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Routing\Middleware\RoutingMiddleware.php(59): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #12 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Http\Runner.php(65): Cake\Routing\Middleware\RoutingMiddleware->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner)) #13 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Routing\Middleware\AssetMiddleware.php(88): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #14 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Http\Runner.php(65): Cake\Routing\Middleware\AssetMiddleware->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner)) #15 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Error\Middleware\ErrorHandlerMiddleware.php(92): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #16 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Http\Runner.php(65): Cake\Error\Middleware\ErrorHandlerMiddleware->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner)) #17 C:\xampp\htdocs\cefet\vendor\cakephp\debug_kit\src\Middleware\DebugKitMiddleware.php(52): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #18 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Http\Runner.php(65): DebugKit\Middleware\DebugKitMiddleware->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner)) #19 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Http\Runner.php(51): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #20 C:\xampp\htdocs\cefet\vendor\cakephp\cakephp\src\Http\Server.php(80): Cake\Http\Runner->run(Object(Cake\Http\MiddlewareQueue), Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #21 C:\xampp\htdocs\cefet\webroot\index.php(37): Cake\Http\Server->run() #22 {main}
6 respostas

Oi Janai, tudo bom?

Quantos dados você tem registrado em Inscricoes?

Talvez o seu problema seja um request fora do escopo da quantidade de dados.

De qualquer forma, tenta tratar a exceção para esse caso:

try {
    $this->paginate = [
            'contain' => ['Processos', 'Turmas', 'Responsaveis', 'Candidatos'],
        'limit'=>10
        ];    } catch (NotFoundException $e) {
        // Aqui você pode redirecionar o usuario para a primeira pagina da lista. Ou a última.
    }

Abraço!

quando fiz o teste tinha uns 4 cadastros.. e testei o limit com 2 pra ver se estava funcionando..

E rola o mesmo erro?

sim... ta tenso..

tentei testa com um controler menor que nao tem relacionamento e da a mesma coisa..

class TurmasController extends AppController
{

     public $paginate = [
        'limit' => 5
    ];

    public function initialize(){

        parent::initialize();
        $this->loadComponent('Paginator');

    }
 public function index()
    {
        $turmas = $this->Turmas;

        $this->set('turmas', $this->paginate($turmas));
        $this->set('_serialize', ['turmas']);
    }
}

tenho 14 registros e paginei de 5 em 5

Estranho...

Você consegue subir o projeto no git pra eu dar uma olhada? Assim consigo testar também.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software