2016-09-15 2 views
4

В настоящее время я использую Laravel 5.3 и задавался вопросом, есть ли опция для настройки деактиватора Three Dots. (Скачет страницы 9-10, который до конца)Laravel Pagination «Три точки» Настройка разделителя

Example

В настоящее время три точки инициации, если существует более 11 страниц ... Что разве тихий полезно, если ваш сайт реагирует. если есть на многих страницах, поэтому он разбивается на 2 строки.

Example2

Я не могу найти ничего о там быть варианты $ ресурсо-> ссылки(). Но если есть, пожалуйста, скажите мне! Очень признателен.

Редактировать: оно имеет следующую функцию: поставщик/laravel/framework/src/Illuminate/Pagination/LengthAwarePaginator.php (страница: 128, render()). Текущая функция не поддерживает вторую переменную. Так что, наверное, мне нужно его перестроить?

+0

вы можете сделать 'PHP ремесленник поставщика: publish'and это создает файлы в' ресурсы \ Views \ поставщики \ paginations'so вы можете настроить страница, которая вам нужна (bootstrap, bootstrap4 и т. д.) для разбивки на страницы – Mistre83

+0

Да, но это, к сожалению, только передняя часть. Это не позволяет мне сказать, какая страница будет пунктирной. Поскольку paginate не разрешает второй параметр. – user3410823

ответ

1

Добавление предыдущего ответа, как только вы генерировать вид поставщика файлов с помощью команды ремесленник PHP ремесленника поставщика: публиковать вы можете создать новый в этой папке и назовите его, например custom.blade.php и поместите следующий код:

@if ($paginator->hasPages()) 
<ul class="custom-pagination"> 
    {{-- Previous Page Link --}} 
    @if ($paginator->onFirstPage()) 
     <li class="disabled pageNumber"><span>&laquo; Prev</span></li> 
    @else 
     <li><a class="pageNumber" href="{{ $paginator->previousPageUrl() }}" rel="prev">&laquo;</a></li> 
    @endif 

    {{-- Pagination Elements --}} 
    @foreach ($elements as $element) 
     {{-- Array Of Links --}} 
     @if (is_array($element)) 
      @foreach ($element as $page => $url) 
       @if ($page === $paginator->currentPage()) 
        <li class="active pageNumber"><span>{{ $page }}</span></li> 
       @elseif (($page === $paginator->currentPage() + 1 || $page === $paginator->currentPage() + 2) 
       || $page === $paginator->lastPage()) 
        <li><a class="pageNumber" href="{{ $url }}">{{ $page }}</a></li> 
       @elseif ($page === $paginator->lastPage()-1) 
        <li class="disabled"><span>...</span></li> 
       @endif 
      @endforeach 
     @endif 
    @endforeach 

    {{-- Next Page Link --}} 
    @if ($paginator->hasMorePages()) 
     <li><a class="pageNumber" href="{{ $paginator->nextPageUrl() }}" rel="next">Next &raquo;</a></li> 
    @else 
     <li class="disabled pageNumber"><span>Next &raquo;</span></li> 
    @endif 
</ul>@endif 

важной частью кода для трех точек находится в {{- массив ссылок -}} части. Я думаю, что это более или менее делает то, что вам нужно, но может потребовать дополнительной настройки.

, то вы можете использовать его на ваш взгляд, как это:

<div class="pagination"> 
    @if ($users instanceof \Illuminate\Pagination\LengthAwarePaginator) 
     {{ $users->links('vendor.pagination.custom') }} 
    @endif 
</div> 
+0

Не относится к Laravel 5.4, где 3-точечный текст является фактическим элементом в коллекции '$ elements', который отправляется с объектом' Paginator', и распознается в виде лезвия с помощью: '@if (is_string ($ element))', as можно увидеть в [источнике на GitHub] (https://github.com/laravel/framework/blob/5.4/src/Illuminate/Pagination/resources/views/default.blade.php#L13) –

1

Это решение Laravel 5.5 я обнаружил через несколько итераций. Вот что делает:

  • Показывает первую и последнюю страницу
  • Показывает первые и последние две страницы из текущей страницы
  • Три точки появляются только на оставшиеся после текущей страницы больше чем 2
  • Три точки появляются только справа после текущей страницы меньше, чем 2 - (кол-во страниц)
{{-- Pagination Elements --}} 
@foreach ($elements as $element) 
    {{-- Array Of Links --}} 
    @foreach ($element as $page => $url) 
     {{-- Use three dots when current page is greater than 2. --}} 
     @if ($paginator->currentPage() > 2 && $page === 2) 
      <li class="page-item disabled"><span class="page-link">...</span></li> 
     @endif 

     {{-- Show active page else show the first and last two pages from current page. --}} 
     @if ($page == $paginator->currentPage()) 
      <li class="page-item active"><span class="page-link">{{ $page }}</span></li> 
     @elseif ($page === $paginator->currentPage() + 1 || $page === $paginator->currentPage() + 2 || $page === $paginator->currentPage() - 1 || $page === $paginator->currentPage() - 2 || $page === $paginator->lastPage() || $page === 1) 
      <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li> 
     @endif 

     {{-- Use three dots when current page is awasy from end. --}} 
     @if ($paginator->currentPage() < $paginator->count() - 2 && $page === $paginator->count() - 1) 
      <li class="page-item disabled"><span class="page-link">...</span></li> 
     @endif 
    @endforeach 
@endforeach 

Выход:

Page 1 (first page)

Page 3

Page 10 (last page)