2016-01-09 2 views
1

После этого видеоуроки по созданию PHP Authentication System с Slim/Twig and Eloquent 5.2.Пагинация с Twig и Eloquent-5.2

Я закончил видеоурок и имею рабочую систему. Но я не могу добавить разбивку на страницы во все списки пользователей на 25th episode учебника.

Все, кажется, работает нормально. но когда я нажимаю страницу 2,3,4 и т. д., я все еще получаю данные на странице 1.

Вот код, который я до сих пор:

маршруты/пользователь/all.php

$app->get('/users', $authenticated(), function() use ($app) { 
     $users = $app->user->where('active', true)->paginate(5); 
     $users->setPath($app->urlFor('user.all')); 

     $app->render('user/all.php', [ 
      'users' => $users 
     ]); 
    })->name('user.all'); 

вид/пользователь/all.php

{% extends 'templates/default.php' %} 

{% block title %}All Users{% endblock %} 

{% block content %} 
    <h4>All Users</h4> 
    {% if users is empty %} 
     <p>No registered users</p> 
    {% else %} 
     {% for user in users %} 
      <div class="user"> 
       <a href="{{ urlFor('user.profile', {username: user.username}) }}"><img src="{{ user.getAvatarUrl({size: 18}) }}"> {{ user.username }}{% if user.getFullName %} | {{ user.getFullName }}{% endif %}</a> 
       {% if user.isAdmin() %} 
        [Admin] 
       {% endif %} 
      </div> 
     {% endfor %} 
     {{ users.render()|raw }} 
    {% endif %} 
{% endblock %} 

composer.json

{ 
    "autoload": { 
     "psr-4": { 
      "A146\\": "app/A146" 
     } 
    }, 
    "require": { 
     "slim/slim": "~2.0", 
     "slim/views": "0.1.*", 
     "twig/twig": "~1.21", 
     "phpmailer/phpmailer": "~5.2", 
     "hassankhan/config": "0.8.*", 
     "illuminate/database": "5.*", 
     "illuminate/pagination": "5.*", 
     "alexgarrett/violin": "2.*", 
     "ircmaxell/random-lib": "~1.1", 
     "fzaninotto/faker": "*" 
    } 
} 

Вот результат я получаю:

<div class="row"> 
<h4>All Users</h4> 
    <div class="user"> 
     <a href="/pcb/public/u/Admin"><img src="http://www.gravatar.com/avatar/...?s=18&amp;d=identicon"> Admin</a> [Admin] 
    </div> 
    <div class="user"> 
     <a href="/pcb/public/u/Jamarcus22"><img src="http://www.gravatar.com/avatar/...?s=18&amp;d=identicon"> Jamarcus22 | Abbie O&#039;Hara</a> 
    </div> 
    <div class="user"> 
     <a href="/pcb/public/u/jWalker"><img src="http://www.gravatar.com/avatar/...?s=18&amp;d=identicon"> jWalker | Salvador Douglas</a> 
    </div> 
    <div class="user"> 
     <a href="/pcb/public/u/Karelle00"><img src="http://www.gravatar.com/avatar/...?s=18&amp;d=identicon"> Karelle00 | Harmon Ryan</a> 
    </div> 
    <div class="user"> 
     <a href="/pcb/public/u/lCarter"><img src="http://www.gravatar.com/avatar/...?s=18&amp;d=identicon"> lCarter | Lilly Stokes</a> 
    </div> 
<ul class="pagination"><li class="disabled"><span>&laquo;</span></li> <li class="active"><span>1</span></li><li><a href="/pcb/public/users?page=2">2</a></li><li><a href="/pcb/public/users?page=3">3</a></li><li><a href="/pcb/public/users?page=4">4</a></li><li><a href="/pcb/public/users?page=5">5</a></li><li><a href="/pcb/public/users?page=6">6</a></li><li><a href="/pcb/public/users?page=7">7</a></li> <li><a href="/pcb/public/users?page=2" rel="next">&raquo;</a></li></ul> 
</div> 

любая помощь очень ценится!

ответ

2

Ну, это был месяц и несколько дней. Я также столкнулся с вашей проблемой, я просто получил свое решение.

То, что я был, я назвал Paginator класс затем используется статический метод, чтобы заставить пагинацию на любой странице я нахожусь в.

Paginator::currentPageResolver(function() use ($current_page) { 
    return $current_page; 
}); 

Затем вызовите данные, которые вы хотели быть пронумерованы. Вот мой весь код ниже.

<?php 

use Illuminate\Pagination\Paginator; 

$app->get('/controller/clients', $controllerAuthenticated(), function() use ($app) { 

    $request = $app->request; 
    $current_page = $request->get('page'); 

    Paginator::currentPageResolver(function() use ($current_page) { 
     return $current_page; 
    }); 

    $clients = $app->client->where(function($query) use ($client_name, $country_id) { 
     if ($client_name != '') { 
      $query->where('client_name', 'LIKE', '%'. $client_name .'%'); 
     } 

     if ($country_id != '') { 
      $query->where('country_id', $country_id); 
     } 
    }) 
    ->orderBy('client_name', 'ASC') 
    ->paginate(1); 

    $clients->setPath($app->urlFor('controller.client.all')); 

    $app->render('/controller/client/all.twig', [ 
     'clients' => $clients, 
     'countries' => $countries, 
     'request' => $request 
    ]); 
})->name('controller.client.all'); 

Я забыл, где я увидел ответ, хотя я найду ссылку на ссылку, как только найду ее.

+1

его было время, так как я пересматривал этот проект. но ваше решение работает на 100% безупречно! –

Смежные вопросы