Lagvel pagination link не работает при пустом вводе - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь показать все данные из моей таблицы в виде лезвия Ларавеллы.

Контроллер

public function search()
    {
       $search = request('show');
       $users = User::query();

       foreach ($search as $field=>$value) 
       {
             if($value!=NULL)
             {
                $users = $users->where($field, 'LIKE', '%'.$value.'%');
             }
        }
       if(request()->has('sort'))
       {
            $order = explode(',',request('sort'));
            $users = $users->orderBy($order[0],$order[1]);
       }
        $users = $users->SimplePaginate(15);

        return view('nabil.homepage',compact('users'));         
    }

Blade

@foreach($users as $user)
    <tr>
        @if(session()->has('show'))
            @foreach(session()->get('columns') as $column)
                @if(in_array($column,session()->get('show')))
                    <td>{{ $user->$column }}</td>
                @endif
            @endforeach
        @endif
    </tr>
@endforeach
</table>
{{ $users->appends(Illuminate\Support\Facades\Input::except('page'))->links() }}

Если я что-то ищу, то это работает отлично.Но если я ищу с пустым значением.Тогда это не работает.Первая страница появляется без проблем, но затем она ломается.

Случай 1 (проблемный случай):

Я ввожу пустое значение в поиске.Таким образом, URL-адрес поиска /search?show%5Bbango%5D=.

Однако, когда я нажимаю «Далее», URL-адрес становится /search?page=2 (И возвращает ошибку)

Если я вручную введу /search?show%5Bbango%5D=&page=2 в URL-адресе, тоон отлично работает.

Случай 2:

Я ввожу некоторые данные, например, «123» в поиске.Тогда мой URL становится /search?show%5Bbango%5D=123.В этом случае все работает отлично.

Случай 3:

Это может быть неактуально.Но если я запускаю запрос в более чем одном поле, тогда он работает нормально, но почему-то все пустые входные данные удаляются из URL, когда я использую нумерацию страниц.

Я могу попытаться выполнить поиск по двум полям ввода (пример: имя и банго).Если я оставлю поле имени пустым и введу «123» в банго, то URL-адрес будет выглядеть как /search?show%5Bbango%5D=123&show%5Bname%5D=.

Однако, если я попытаюсь перейти на следующую страницу.тогда URL становится /search?show%5Bbango%5D=123&page=2.

. Хотя показанные результаты хороши, но URL внезапно пропускает поле имени.

Как я могу убедиться, что разбиение на страницы все еще работает для пустого ввода.Я проверил некоторые похожие вопросы и попытался добавить запрос.Но это все еще не работает для меня.

1 Ответ

0 голосов
/ 13 февраля 2019

Поскольку вы используете foreach, он ожидает массив.Попробуйте установить

$search = request('show') ?? [];

на контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...