Php Laravel 5中自定义分页演示器的替代方案是什么?

Php Laravel 5中自定义分页演示器的替代方案是什么?,php,laravel,laravel-5,Php,Laravel,Laravel 5,在Laravel 5中,自定义演示者是否已被删除?有人知道在Laravel5中调整类名和查看数据的替代方法吗 在Laravel 5中,自定义分页基于演示者(类)而不是视图 假设在路由代码中 $users = Users::paginate(15); 在L4中,您曾经在视图中执行类似操作: $users->appends(['sort' => 'votes'])->links(); 在L5中,您可以执行以下操作: $users->appends(['sort' =>

在Laravel 5中,自定义演示者是否已被删除?有人知道在Laravel5中调整类名和查看数据的替代方法吗


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

假设在路由代码中

$users = Users::paginate(15);
在L4中,您曾经在视图中执行类似操作:

$users->appends(['sort' => 'votes'])->links();
在L5中,您可以执行以下操作:

$users->appends(['sort' => 'votes'])->render();
render()
方法接受
illumb\Contracts\Pagination\Presenter
实例。您可以创建一个实现该约定的自定义类,并将其传递给
render()
方法

或者,您可以扩展Laravel分页器(以便使用其分页逻辑),然后将现有分页实例(
$users->…
)传递给扩展类构造函数。这确实是我基于Laravel提供的Bootstrap presenter创建自定义presenter所做的。它使用所有的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;');
    }
}

我意识到这是一个旧线程,但我正试图做@javi stolz所做的事情,它没有调用我的重写
getActivePageWrapper
方法。它仍然从
BootstrapThreePresenter
调用该函数。还有其他人有这个问题吗?这里是Laravel5.8关于如何扩展核心分页的帖子:stackoverflow.com/a/58005778/1916821