2015-04-04 7 views
1

В Laravel 5 я использую simplePagination, как указано в docs. Я хотел бы настроить выход так, а не на двойные шевроны и rdaquo; '>>', я мог бы поставить стрелку вправо. Однако я не могу нигде его настроить.Laravel 5 Настройка разбиения на страницы

Кто-нибудь знает, где находится документация для этого? Или где начать искать?

+0

Я не могу сказать, если [второй ответ на вопрос SO] (http://stackoverflow.com/questions/26148645/laravel-show-only-next-and-previous-link-in-pagination) может помочь, он упоминает o верстка текста по умолчанию предыдущих/следующих ссылок с пользовательским текстом. – SaschaM78

+0

Да выглядит близко - но я думаю, что это для L4. Не вижу ничего подобного для L5. – mattl

ответ

1

Хотя это недокументировано, это, безусловно, возможно. Это почти то же самое, что и для Laravel 4. В основном все, что вам нужно, это создать пользовательский презентатор и обернуть экземпляр paginator.

Вот как ведущий может выглядеть следующим образом:

use Illuminate\Contracts\Pagination\Paginator; 
use Illuminate\Contracts\Pagination\Presenter; 
use Illuminate\Pagination\BootstrapThreeNextPreviousButtonRendererTrait; 
use Illuminate\Pagination\UrlWindow; 
use Illuminate\Pagination\UrlWindowPresenterTrait; 

class CustomPresenter implements Presenter 
{ 
    use BootstrapThreeNextPreviousButtonRendererTrait, UrlWindowPresenterTrait; 

    private $paginator; 

    private $window; 

    public function __construct(Paginator $paginator, UrlWindow $window = null) 
    { 
     $this->paginator = $paginator; 
     $this->window = is_null($window) ? UrlWindow::make($paginator) : $window->get(); 
    } 

    public function render() 
    { 
     if ($this->hasPages()) { 
      return sprintf(
       '<ul class="pagination">%s %s %s</ul>', 
       $this->getPreviousButton("Previous"), 
       $this->getLinks(), 
       $this->getNextButton("Next") 
      ); 
     } 

     return null; 
    } 

    public function hasPages() 
    { 
     return $this->paginator->hasPages() && count($this->paginator->items() !== 0); 
    } 

    protected function getDisabledTextWrapper($text) 
    { 
     return '<li class="disabled"><span>'.$text.'</span></li>'; 
    } 

    protected function getActivePageWrapper($text) 
    { 
     return '<li class="active"><span>'.$text.'</span></li>'; 
    } 

    protected function getDots() 
    { 
     return $this->getDisabledTextWrapper("..."); 
    } 

    protected function currentPage() 
    { 
     return $this->paginator->currentPage(); 
    } 

    protected function lastPage() 
    { 
     return $this->paginator->lastPage(); 
    } 

    protected function getAvailablePageWrapper($url, $page, $rel = null) 
    { 
     $rel = is_null($rel) ? '' : ' rel="'.$rel.'"'; 

     return '<li><a href="'.htmlentities($url).'"'.$rel.'>'.$page.'</a></li>'; 
    } 
} 

Тогда из контроллера:

public function index() 
    { 
     $users = User::paginate(5); 
     $presenter = new CustomPresenter($users); 

     return view("home.index")->with(compact('users', 'presenter')); 
    } 

Вид:

@foreach ($users as $user) 
    <div>{{ $user->email }}</div> 
@endforeach 
{!! $presenter->render() !!} 
+0

Спасибо. Пойдем немного по этому поводу. Счастливой Пасхи. – mattl

+0

Спасибо за то, что я посоветовал сделать свою собственную версию SimpleBootstrapThreePresenter.php. Который требовал только редактирование двух строк. Но спасибо, что начал меня. – mattl

Смежные вопросы