在Laravel 5中,自定义演示者已被删除?有没有人知道Laravel 5中的替代品是什么来调整类名和查看数据?
答案 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('…');
}
}