2017-05-04 115 views
0

这里是我的方法即时获取所有帖子,我可以切换它们从url例如posts/1 or posts/2等。 我怎样才能设置一个分页符在我的看法在这种情况下?PHP分页设置页面上查看自定义PHP MVC

这里是控制器:

namespace fordev\app\controllers; 

use fordev\app\core\Controller; 

class Home extends Controller 
{ 
    public function manage($page = NULL) 
    { 
     \Session::checkNotIsset('logged','/pfe/login'); 
     $model = $this->model('home')->getAllPosts($page); 
     $this->view()->renderWithAdditionalHeaderAndFooter('home',['Manage'], 'Home', [$model]); 
    } 
} 

这里是型号:

namespace fordev\app\models; 
use fordev\app\core\Model; 


class Home extends Model 
{ 
    /** 
    * Get All posts method 
    * @param $page = current page 
    */ 
    public function getAllPosts($page) 
    { 
     $con = $this->getInstance(); 

     $page = (isset($page) && $page < 100000)? (int) $page : 1; 
     $perPage = 5; 
     $start = $perPage * ($page - 1); 
     $total = \Database::countRows($con, '*','annonce'); 
     $totalPages = ceil($total/$perPage); 

     $next = $page+1; 
     $prev = $page-1; 

     $sql = "SELECT * FROM annonce INNER JOIN users ON users.ID = annonce.a_publisher ORDER BY a_id DESC LIMIT $start, $perPage"; 
     $stmt = $con->prepare($sql); 
     $stmt->execute(); 

     return ($stmt->rowCount() > 0) ? $stmt->fetchAll() : false; 
    } 


} 

这里是视图:

<div class="container"> 
    <div class="col-md-12"> 
     <div class="blog-header"> 
      <h1 class="blog-title">Les Annonce De Kisoun</h1> 
      <p class="lead blog-description">Tous les annonces de village Kissoun se trouve ICI !.</p> 
     </div> 
    </div> 

    <div class="col-md-8"> 
     <?php if(is_array($modelData[0])): // if there is data in the database ?> 
    <?php foreach ($modelData[0] as $value) { // foreach loop ?> 

     <div class="panel panel-default"> 
     <div class="panel-heading"> 
     <h3><?=$value->a_title ?></h3> 
     </div> 

      <div class="panel-body annonce"> 

       <div class="annonce-image pull-left"> 
        <img src="<?=Rooter::get('UP_IMG').$value->a_image ?>" alt=""> 
       </div> 

     <p class="pull-right"><?=$value->a_content ?></p> 
     <div class="clear"></div> 
     <hr> 
      <a class="btn btn-danger pull-right">Details</a> 
      <span class="label pull-left"><?= \Helper::elapsedTime($value->a_time) ?> by <?=$value->name ?></span> 

      </div> 
     </div> 

    <?php } // end of foreach loop ?> 

    <?php endif; ?> 
    <?php if($modelData[0] === false): ?> 
     <div class="alert alert-danger"> 
     <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> 
     <strong>Error</strong> Pas D'annonce encore ... 
     </div> 
    <?php endif; ?> 
    </div> 


</div> 

回答

1

解决!

只是返回分页信息作为数组与旁边的帖子阵列和我能够使用这个数组像这样

<?php 
$paginator = $modelData[0]['paginator']; 
$page  = $paginator['page']; 
$start  = $paginator['start']; 
$totalPages = $paginator['totalPages']; 
$next  = $paginator['next']; 
$prev  = $paginator['prev']; 
?> 
认为使用这些信息的视图 像这样

class Home extends Model 
{ 
    /** 
    * Get All posts method 
    * @param $page = current page 
    */ 
    public function getAllPosts($page) 
    { 
     $con = $this->getInstance(); 

     $page = (isset($page) && $page < 100000)? (int) $page : 1; 
     $perPage = 5; 
     $start = $perPage * ($page - 1); 
     $total = \Database::countRows($con, '*','annonce'); 
     $totalPages = ceil($total/$perPage); 

     $next = $page+1; 
     $prev = $page-1; 

     $sql = "SELECT * FROM annonce INNER JOIN users ON users.ID = annonce.a_publisher ORDER BY a_id DESC LIMIT $start, $perPage"; 
     $stmt = $con->prepare($sql); 
     $stmt->execute(); 

     $paginatoinInfo = [ 
      "page"   => $page, 
      "start"   => $start, 
      "totalPages" => $totalPages, 
      "next"   => $next, 
      "prev"   => $prev 
     ]; 

     $res = []; 
     $res['posts'] = ($stmt->rowCount() > 0) ? $stmt->fetchAll() : false; 
     $res['paginator'] = $paginatoinInfo; 

     return $res; 
    } 


}