Проблема разбивки на страницы Laravel по одной странице

Извините, у меня проблема с моей пагинацией laravel. Дает мне одну страницу за одной, например, в моей таблице 16 строк я делаю разбивку на страницы (10), нумерация страниц дает мне на первой странице от 1 до 10 и на второй страница с 1 по 6 хочу нормальную нумерацию страниц с 1 по 10 и с 11 по 16 помогите пожалуйста

 public function allappointmnts(){


  $allapo=DB::table('bookappoitments')->orderBy('times.id')
  ->join('users','bookappoitments.users_id','users.id')
  ->join('times','bookappoitments.times_id','times.id')
  ->join('dates','bookappoitments.Dates_id','dates.id')
  ->paginate(10);

   return view('admin.Managers.allappoinments',compact('allapo'));

}

на странице блейда:

  <div class = "text-center">
    {!! $allapo->links(); !!}
  </div>

Таблица :

 <table class = "table table-bordered table-hover table-striped">
                                        <thead>
                                            <tr>
                                                <th>#</th>
                                                <th>Date</th>
                                                <th>Time</th>
                                                <th>Employee</th>
                                                <th>Name</th>
                                                <th>Email</th>
                                                <th>Company</th>
                                                <th>Phone</th>
                                                <th>Location</th>
                                                <th>Remarks</th>
                                                <th style = "text-align: center;">Action</th>


                                            </tr>
                                        </thead>
                                        <tbody>
                                            <tr>

                                                @foreach($allapo as $Appointments)

                                                <td>{{ $loop->index+1 }}</td> 
                                                <td>{{ $Appointments->Dates }}</td>
                                                <td>{{ $Appointments->from_to }}</td>
                                                <td>{{ $Appointments->name }}</td>
                                                <td>{{ $Appointments->gustname }}</td>
                                                <td>{{ $Appointments->gustemail }}</td>
                              <td>{{ $Appointments->gustcompany }}</td>
                              <td>{{ $Appointments->gustphone }}</td>
                                                <td>{{ $Appointments->Location }}</td>
                                                <td>{{ $Appointments->Remarks }}</td>

                              <td>
                                 <a class = "btn btn-success btn-mini deleteRecord " href = "{{url('showbymanagment',$Appointments->id)}}">Show</a>

                     </td> 


                                                </tr>

                                                @endforeach

Вы уверены, что вторая страница на самом деле не загружает 11-16 элементов? Здесь нечего утверждать иначе.

Qirel 08.04.2019 12:22

Да, я уверен, что не могу представить :)

Hima Hima 08.04.2019 12:23

Можете ли вы показать несколько скриншотов этого?

Qirel 08.04.2019 12:24

хорошо, секундочку

Hima Hima 08.04.2019 12:25
d.top4top.net/p_1193ag4ze1.png
Hima Hima 08.04.2019 12:27
e.top4top.net/p_1193z8qe72.png
Hima Hima 08.04.2019 12:27

Можете ли вы добавить свой код для таблицы?

rpm192 08.04.2019 12:28

@ rpm192 уверен, что добавил таблицу

Hima Hima 08.04.2019 12:31

Таким образом, он на самом деле показывает разные предметы. Вы «просто» хотите, чтобы нумерация ({{ $loop->index+1 }}) была другой? dd($allapo), он должен содержать количество элементов, на какой странице вы находитесь и т. д. Посчитайте. Обновлено: он должен даже содержать "from" и "to".

brombeer 08.04.2019 12:37

@kerbholz Нет, разницы нет, цифры 10 и 6 должны быть 16 на каждой странице.

Hima Hima 08.04.2019 12:39
laravel.com/docs/5.8/pagination#paginator-instance-methods содержит все методы пагинатора. {{ $allapo->firstItem() }} возвращает/показывает что-нибудь? Если это так, добавьте это в свой индекс цикла
brombeer 08.04.2019 13:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
11
566
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Попробуйте этот код:

<?php $i = $lists->perPage() * ($lists->currentPage() - 1); ?>
   <table class = "table table-bordered table-hover table-striped">
      <thead>
         <tr>
          <th>#</th>
          <th>Date</th>
          <th>Time</th>
          <th>Employee</th>
          <th>Name</th>
          <th>Email</th>
          <th>Company</th>
          <th>Phone</th>
          <th>Location</th>
          <th>Remarks</th>
          <th style = "text-align: center;">Action</th>


          </tr>
        </thead>
       <tbody>
        <tr>
@foreach($allapo as $Appointments)
  <td><?php $i++; ?>{{ $i }} </td> 
  <td>{{ $Appointments->Dates }}</td>
  <td>{{ $Appointments->from_to }}</td>
  <td>{{ $Appointments->name }}</td>
  <td>{{ $Appointments->gustname }}</td>
  <td>{{ $Appointments->gustemail }}</td>
  <td>{{ $Appointments->gustcompany }}</td>
  <td>{{ $Appointments->gustphone }}</td>
  <td>{{ $Appointments->Location }}</td>
  <td>{{ $Appointments->Remarks }}</td>
  <td><a class = "btn btn-success btn-mini deleteRecord " href = " 
{{url('showbymanagment',$Appointments->id)}}">Show</a></td> 
</tr>
@endforeach

спасибо, но выдает ошибку Неопределенная переменная: i (Вид: C:\xampp\htdocs\–-prefer-dist - final без удаления\resources\views\admin\Managers\allappoinments.blade.ph‌​p)

Hima Hima 08.04.2019 13:07

Вы вставили этот код ниже перед foreach? <?php $i = $lists->perPage() * ($lists->currentPage() - 1); ?>

WinterSoldier 08.04.2019 13:10
Ответ принят как подходящий

чтобы увидеть правильное число измените строку

<td>{{ $loop->index+1 }}</td> 

к:

 <td>{{ ($allapo->currentPage() - 1) * $allapo->perPage() + $loop->iteration }} <td>

очень хорошо зацикливается от 1 до 16, но в целом есть ли какой-либо код, чтобы дать мне общее количество на каждой странице, которое он все еще дает мне на первой странице 10 и на второй 6

Hima Hima 08.04.2019 13:03

Не совсем уверен, но вам нужно будет написать какую-то функцию, чтобы исправить это.

По сути, вам нужно сделать это:

  1. Получить номер страницы (например: 1)
  2. Умножьте это на количество строк на странице (например: 10)
  3. Добавьте номер итерации
  4. Вычесть количество страниц

function correct_pagination_numbers($cp, $pp, $counter)
{
    $c = (($pp * $cp) + $counter) - $pp;
    return $c;
}

Затем вы можете вызвать функцию в своем представлении следующим образом:

<td>{{ correct_pagination_numbers($allapo->currentPage(), $allapo->perPage(), $loop->index) }}</td> 

Вероятно, было бы лучшим решением сделать это во вспомогательном файле. Если вы не знаете, как создать вспомогательный файл и автоматически загрузить его, вы можете посмотреть здесь.

Спасибо за ваш ответ, но дайте мне вызов неопределенной функции correct_pagination_numbers() (вид: C:\xampp\htdocs\–-prefer-dist - final без удаления\resources\views\admin\Managers\allappoinments.blade.ph‌​p )

Hima Hima 08.04.2019 13:06

Вы изменили файл composer.json, чтобы он автоматически загружал вспомогательный файл?

rpm192 08.04.2019 13:56

Ваша проблема в том, что вы используете текущий индекс каждого цикла, который всегда будет находиться в диапазоне от 1 до 10 на каждой странице (поскольку у вас есть 10 элементов на странице).

Вам нужно получить текущую страницу, которую вы используете

$allapo->currentPage()

Затем получите количество элементов на странице, которую вы получили, используя

$allapo->perPage()

Умножьте эти два, и это будет базовое число для вашей разбивки на страницы, что означает, что это число, от которого вы должны увеличиваться.

Затем индексированная таблица должна быть

{{ $allapo->currentPage() * $allapo->perPage() + $loop->index }}

вместо

{{ $loop->index+1 }}

Затем, чтобы исправить номера заголовков (10 и 6 вверху), получите общее количество результатов вместо количества страниц, используя

$allapo->total()

См. Документация Laravel для более подробной информации.

Вам нужно будет описать, в чем именно проблема - что происходит, что должно произойти. Мы не можем читать ваши мысли или видеть, что у вас на экране.

Qirel 08.04.2019 13:52

Попробуй
@foreach($allapo as $key => $Appointments)

{{ $key + $allapo->firstItem() }}

@endforeach

Другие вопросы по теме