2014-08-29 316 views
1

我在Laravel 4中使用默認的Bootstrap滑塊導航,它工作得非常好:但現在我想用兩個自定義改進它,我不知道如何:Laravel 4自定義分頁:轉到第一頁/最後一頁並顯示固定數量的鏈接

1:在開始時添加「去第一頁」,禁用,如果我們在第一頁;和類似的「走到最後一頁」在最後,禁用,如果我們在最後一頁(請看看如何改變箭頭相比,默認Laravel的東西!我想使用「雙箭頭」(«和»)爲「轉到第一/最後」,和一個單箭頭(‹上和›)爲「轉到一個/下一個:

<ul class="pagination"> 
    <li class="disabled"><span>&laquo;</span></li> 
    <li class="disabled"><span>&lsaquo;</span></li> 
    <li class="active"><span>1</span></li> 
    <li><a href="http://laravel/games?page=2">2</a></li> 
    <li><a href="http://laravel/games?page=3">3</a></li> 
    <li><a href="http://laravel/games?page=4">4</a></li> 
    <li><a href="http://laravel/games?page=5">5</a></li> 
    <li><a href="http://laravel/games?page=6">6</a></li> 
    <li><a href="http://laravel/games?page=7">7</a></li> 
    <li><a href="http://laravel/games?page=8">8</a></li> 
    <li><a href="http://laravel/games?page=9">9</a></li> 
    <li><a href="http://laravel/games?page=10">10</a></li> 
    <li><a href="http://laravel/games?page=2" rel="next">&rsaquo;</a></li> 
    <li><a href="http://laravel/games?page=10" rel="last">&raquo;</a></li> 
</ul> 

2:在一個時間顯示的鏈接的自定義數(即5)而不是默認的長長的名單:

<ul class="pagination"> 
    <li class="disabled"><span>&laquo;</span></li> 
    <li class="disabled"><span>&lsaquo;</span></li> 
    <li class="active"><span>1</span></li> 
    <li><a href="http://laravel/games?page=2">2</a></li> 
    <li><a href="http://laravel/games?page=3">3</a></li> 
    <li><a href="http://laravel/games?page=4">4</a></li> 
    <li><a href="http://laravel/games?page=5">5</a></li> 
    <li><a href="http://laravel/games?page=2" rel="next">&rsaquo;</a></li> 
    <li><a href="http://laravel/games?page=10" rel="last">&raquo;</a></li> 
</ul> 

<ul class="pagination"> 
    <li><a href="http://laravel/games?page=1" rel="first">&laquo;</a></li> 
    <li><a href="http://laravel/games?page=3" rel="prev">&lsaquo;</a></li> 
    <li><a href="http://laravel/games?page=2">2</a></li> 
    <li><a href="http://laravel/games?page=3">3</a></li> 
    <li class="active"><span>4</span></li> 
    <li><a href="http://laravel/games?page=5">5</a></li> 
    <li><a href="http://laravel/games?page=6">6</a></li> 
    <li><a href="http://laravel/games?page=4" rel="next">&rsaquo;</a></li> 
    <li><a href="http://laravel/games?page=10" rel="last">&raquo;</a></li> 
</ul> 

想要看一張圖片嗎?這是應該的各種頁面(這是建立在引導2.3.2舊的程序PHP ...我有原來的代碼,但不知道如何「翻譯」成Laravel OOP)

http://www.iwstudio.it/01.png

到目前爲止,我做了一個custom.php視圖和改變的線'pagination' => 'pagination::slider-3'在laravel /應用/配置/ view.php到'pagination' => 'pagination::custom'

然後,在custom.php觀點,我被困在:

<?php 
    $presenter = new Illuminate\Pagination\BootstrapPresenter($paginator); 
?> 

<?php if ($paginator->getLastPage() > 1): ?> 
    <ul class="pagination"> 

    </ul> 
<?php endif; ?> 

請幫忙嗎?

在此先感謝!

回答

3

你在這裏。

<?php 

class MyPresenter extends Illuminate\Pagination\BootstrapPresenter { 

    public function render() 
    { 
     if ($this->currentPage == 1) { 
      $content = $this->getPageRange(1, $this->currentPage + 2); 
     } 
     else if ($this->currentPage >= $this->lastPage) { 
      $content = $this->getPageRange($this->currentPage - 2, $this->lastPage); 
     } 
     else { 
      $content = $this->getPageRange($this->currentPage - 1, $this->currentPage + 1); 
     } 

     return $this->getFirst().$this->getPrevious('&lsaquo;').$content.$this->getNext('&rsaquo;').$this->getLast(); 
    } 

    public function getFirst($text = '&laquo;') 
    { 
     if ($this->currentPage <= 1) 
     { 
      return $this->getDisabledTextWrapper($text); 
     } 
     else 
     { 
      $url = $this->paginator->getUrl(1); 
      return $this->getPageLinkWrapper($url, $text); 
     } 
    } 

    public function getLast($text = '&raquo;') 
    { 
     if ($this->currentPage >= $this->lastPage) 
     { 
      return $this->getDisabledTextWrapper($text); 
     } 
     else 
     { 
      $url = $this->paginator->getUrl($this->lastPage); 

      return $this->getPageLinkWrapper($url, $text); 
     } 
    } 
} 

可以隨意更改MyPresenter類的名稱,並在您的自定義視圖:

<ul class="pagination"> 
    <?php echo with(new MyPresenter($paginator))->render(); ?> 
</ul> 

當然,這是不是很完美(你可能會遇到的問題,如果總頁數小於3 ),但這會讓你走上正軌。

+0

謝謝Jofry,你讓我走向正確的方向,最後我做了我自己的Laravel包:https://packagist.org/packages/ivanhalen/pagination :-) – Ivan 2014-10-11 14:57:13

相關問題