我通过扩展BootstrapThreePresenter创建了一个FoundationFivePresenter,只需更改getDisabledTextWrapper和getActivePageWrapper并将其放在/ app / Pagination中。
namespace App\Pagination;
use Illuminate\Pagination\BootstrapThreePresenter;
class FoundationFivePresenter extends BootstrapThreePresenter
{
/**
* Get HTML wrapper for disabled text.
*
* @param string $text
* @return string
*/
protected function getDisabledTextWrapper($text)
{
return '<li class="unavailable"><span>'.$text.'</span></li>';
}
/**
* Get HTML wrapper for active text.
*
* @param string $text
* @return string
*/
protected function getActivePageWrapper($text)
{
return '<li class="current"><span>'.$text.'</span></li>';
}
}
我找到了演示者的位置:
public function render(Presenter $presenter = null)
{
if (is_null($presenter) && static::$presenterResolver) {
$presenter = call_user_func(static::$presenterResolver, $this);
}
$presenter = $presenter ?: new BootstrapThreePresenter($this);
return $presenter->render();
}
但我不想实例化我的演示者并将其传递给视图中的渲染。所以我查看了LengthAwarePaginator,因为在我的控制器中我调用了User :: paginate(15)并且没有使用SimplePaginator,并且设置$ presenterResolver的唯一其他方法似乎是通过扩展LengthAwarePaginator并将其设置为默认为新的渲染中的FoundationFivePresenter实例,或以某种方式实例化LengthAwarePaginator并调用presenter传入我的演示者的新实例,这看起来更加麻烦。
是否有更简单的方法在Laravel 5.1中使用自定义分页器,而不涉及在视图中传入实例?为了以防万一,我检查了配置文件中的设置。