Как я могу отобразить нумерацию страниц в laravel?

Я использую ларавель 5.6

Я пробую эту документацию: https://laravel.com/docs/5.6/pagination

Мой контроллер такой:

public function index()
{
    $products = $this->product->list(); 
    dd($products);
    return view('admin.product.index',compact('products'));
}

Моя функция списка выглядит следующим образом:

public function scopeList($query)
{
    return $query->orderBy('updated_at', 'desc')->paginate(20);
}

Если я dd($products);, результат будет таким:

введите здесь описание изображения

В представлении laravel я добавляю это:

 {{ $products->links() }}

Затем я проверяю в Интернете, результат пустой

Почему результат пустой?

Здесь что-то не так?

Если изображение не отображается, перейдите сюда: https://postimg.org/image/w39usbfrv/


person Success Man    schedule 21.02.2018    source источник
comment
существует ли функция list()?   -  person arun    schedule 21.02.2018
comment
@arunkumar Да. Я обновил свой вопрос   -  person Success Man    schedule 21.02.2018
comment
попробуйте изменить {{ $products->links() }} на {!! $products->render() !!}, как указано в моем ответе.   -  person Option    schedule 21.02.2018
comment
@Option То же самое. Результат пустой   -  person Success Man    schedule 21.02.2018
comment
Вы используете оператор foreach? Поделитесь кодом файла просмотра.   -  person Option    schedule 21.02.2018
comment
добавить больше продуктов   -  person syed mahroof    schedule 08.08.2018


Ответы (4)


код вашего контроллера будет выглядеть так

$products = DB::table('products')->paginate(20);
return view('admin.product.index', ['products' => $products ]);

код вашей страницы просмотра выглядит так

   @foreach ($products as $product)
         {{ $product->product_name}}
    @endforeach
    {{ $products->links() }}

Примечание. Чтобы просмотреть ссылки на страницы, добавьте больше элементов, превышающих установленный лимит.

person syed mahroof    schedule 21.02.2018

В laravel разбиение на страницы можно выполнить двумя способами

1) Использование результатов конструктора запросов

$products= DB::table('products')->paginate(15);

or

$products= DB::table('products')->simplePaginate(15);

Если вам нужно отображать только простые ссылки «Далее» и «Предыдущий» в представлении разбивки на страницы, вы можете использовать метод simplePaginate.

2) Использование красноречивых результатов

$products= App\Products::paginate(15);

Чтобы напечатать ссылки на страницы

{{ $products->links() }}

настроить вид страницы с помощью

{{ $paginator->links('view.name') }}

или вы можете сослаться на эту ссылку для более индивидуального представления страницы

Пользовательский вид разбиения на страницы в Laravel 5

person Jazzzzzz    schedule 21.02.2018
comment
Можно ли отобразить первую страницу? - person Angel; 01.03.2020

Использовать функцию paginate()

App\Product::paginate();

или с помощью построителя запросов:

$products= DB::table('products')->paginate(15);
person Mahdi Younesi    schedule 21.02.2018
comment
У меня это было в списке методов. Смотрите мой вопрос. я его обновил - person Success Man; 21.02.2018
comment
забудь $this->product->list(); сделай мой ответ - person Mahdi Younesi; 21.02.2018

Это потому, что вы разбиваете страницы на 20 продуктов, а у вас есть только 11 продуктов. Вот почему нумерация страниц будет доступна только в том случае, если количество продуктов, которые вы запрашиваете, больше, чем количество продуктов, которые вы запрашиваете. У вас есть одна страница и 11 продуктов. Посмотрите вверху #total:11 , lastpage:1 вот почему пустая нумерация страниц , потому что пагинировать нечего.

person user7747472    schedule 21.02.2018