【问题标题】:Laravel 4 custom pagination: go to first/last page and show a fixed number of linksLaravel 4 自定义分页:转到第一页/最后一页并显示固定数量的链接
【发布时间】:2014-10-23 10:24:47
【问题描述】:

我在 Laravel 4 中使用默认的 Bootstrap 滑块导航,它工作得非常好:但现在我想通过两个自定义来改进它,但我不知道如何:

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>

想看图片吗?这就是各种页面应该是这样的(它是基于 Bootstrap 2.3.2 构建的旧程序 PHP...我有原始代码但不知道如何“翻译”成 Laravel OOP)

到目前为止,我创建了一个 custom.php 视图并将 laravel/app/config/view.php 中的行 'pagination' =&gt; 'pagination::slider-3' 更改为 'pagination' =&gt; 'pagination::custom'

然后,在 custom.php 视图中,我被困在:

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

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

    </ul>
<?php endif; ?>

请帮忙?

提前致谢!

【问题讨论】:

    标签: laravel-4 pagination


    【解决方案1】:

    给你。

    <?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,您可能会遇到问题),但这会让您走上正轨。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多