在Laravel 5中,Custom Pagination Presenter的替代方案是什么?

时间:2015-02-09 18:45:34

标签: php laravel laravel-5

在Laravel 5中,自定义演示者已被删除?有没有人知道Laravel 5中的替代品是什么来调整类名和查看数据?

http://laravel.com/docs/4.2/pagination#custom-presenters

1 个答案:

答案 0 :(得分:1)

在Laravel 5中,自定义分页基于演示者(类)而不是视图。

假设你的路由代码中有

$users = Users::paginate(15);

在L4中,您曾经在视图中执行过类似的操作:

$users->appends(['sort' => 'votes'])->links();

在L5中你改为:

$users->appends(['sort' => 'votes'])->render();

render()方法接受Illuminate\Contracts\Pagination\Presenter实例。您可以创建实现该合同的自定义类,并将其传递给render()方法。

或者,您可以扩展Laravel paginator(以便使用其分页逻辑),然后将现有的分页实例($users->...)传递给扩展类构造函数。这确实是我根据Laravel提供的Bootstrap演示者创建自定义Zurb Foundation演示者所做的。它使用所有Laravel分页逻辑,只覆盖渲染方法。

使用我的自定义演示者,我的观点如下:

with(new \Stolz\Laravel\Pagination($users->appends(['sort' => 'votes'])))->render();

我定制的分页主持人是:

<?php namespace Stolz\Laravel;

use Illuminate\Pagination\BootstrapThreePresenter;

class Pagination extends BootstrapThreePresenter
{
    /**
     * Convert the URL window into Zurb Foundation HTML.
     *
     * @return string
     */
    public function render()
    {
        if( ! $this->hasPages())
            return '';

        return sprintf(
            '<ul class="pagination" aria-label="Pagination">%s %s %s</ul></div>',
            $this->getPreviousButton(),
            $this->getLinks(),
            $this->getNextButton()
        );
    }

    /**
     * Get HTML wrapper for disabled text.
     *
     * @param  string  $text
     * @return string
     */
    protected function getDisabledTextWrapper($text)
    {
        return '<li class="unavailable" aria-disabled="true"><a href="javascript:void(0)">'.$text.'</a></li>';
    }

    /**
     * Get HTML wrapper for active text.
     *
     * @param  string  $text
     * @return string
     */
    protected function getActivePageWrapper($text)
    {
        return '<li class="current"><a href="javascript:void(0)">'.$text.'</a></li>';
    }

    /**
     * Get a pagination "dot" element.
     *
     * @return string
     */
    protected function getDots()
    {
        return $this->getDisabledTextWrapper('&hellip;');
    }
}