在Laravel 5中,Custom Presenters已被刪除?有人知道Laravel 5中的替代方法是調整類名和查看數據嗎?Laravel 5中的Custom Pagination Presenter的替代選擇是什麼?
http://laravel.com/docs/4.2/pagination#custom-presenters
在Laravel 5中,Custom Presenters已被刪除?有人知道Laravel 5中的替代方法是調整類名和查看數據嗎?Laravel 5中的Custom Pagination Presenter的替代選擇是什麼?
http://laravel.com/docs/4.2/pagination#custom-presenters
在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('…');
}
}