2016-01-09 36 views
1

在本視頻教程之後建立一個PHP Authentication System苗條/枝條和雄辯5.2。分支與分支和雄辯-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

自從我重新審視這個項目以來,我已經有一段時間了。但您的解決方案完美無瑕! –