Laravel Seaching с нумерацией страниц? - PullRequest
0 голосов
/ 05 декабря 2018

Я так старался получить это, но не смог.Поиск все работает нормально, а также появляется нумерация страниц , но всякий раз, когда я нажимаю на любой номер страницы, открывается пустая страница , так как нет никакого маршрута к «ПОЛУЧИТЬ» этот запрос, может кто-нибудь пожалуйстапривести в какое-то место, где я могу найти, как показать другие страницы с помощью поискового запроса, или мне нужно создать маршрут для показа других страниц?Я все в замешательстве, что делать?

Пробовал с методом GET Тем не менее, не работает

Маршрут

Route::get('search/','Coins@search')->name('coin.search');

Контроллер

public function search(){
        $keyword = Input::get('search');
        if($keyword){
            $result = [];
            $resultByName = Coin::
                                where('type','=','coin')
                                ->where('parent_id','=',0)
                                ->where('coin_name','LIKE',"%{$keyword}%")
                                ->orderBy('id', 'asc')
                                ->paginate(10);
            $resultByDescription = Coin::where('type','=','coin')
                ->where('parent_id','=',0)
                ->where('description','LIKE',"%{$keyword}%")
                ->orderBy('id', 'asc')
                ->paginate(10);
            if($resultByName->count()) {
                $result =  $resultByName;
                $message = "Coin Detail found in coin name !! based on searching data : ".$keyword;
            }else{
                if($resultByDescription->count()){
                    $result =  $resultByDescription;
                    $message = "Coin Detail found in description !! based on searching data : ".$keyword;
                }else{
                    $result = Coin::where('type','=','coin')->where('parent_id','=',0)->get();
                    $message = "No Coin Found !! based on searching data : ".$keyword;
                }
            }
            return view($this->layout.'coins')->with([
                'allCoins' => $result,
                'message'  => $message
            ]);
        }
    }

Blade

  {!! Form::open([
                    'route'   => 'coin.search'
                    ,'method' => 'GET'
                    ,'id'     => 'coinSearch'])
   !!}
         <input type="text" placeholder="Search Your Coin Here . . . " name="search">
         <button type="submit" class="btn btn-sm btn-primary">Search</button>
  {!! Form::close() !!}
{!! $allCoins->render() !!}

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

Вызовите метод appends для объекта результата, возвращаемого запросом на пагинацию.Он принимает массив в качестве параметра, и в массиве вы можете указать столько переменных, сколько захотите.

  $results->appends ();

Например, один из ваших запросов станет

$resultByName = Coin::where('type','=','coin')
                 ->where('parent_id','=',0)
                 ->where('coin_name','LIKE',"%{$keyword}%")
                 ->orderBy('id', 'asc')
                 ->paginate(10);
 $resultByName->appends (array ('keyword' => $keyword));

добавьте все переменные в ссылку, и ваш URL станет

http://your_domain/search?keyword=$keyword(value of this variable)

Разбиение на страницы будет работать без добавления какого-либо пользовательского кода.

0 голосов
/ 07 декабря 2018

Хорошо, я решил эту проблему не сам, очевидно, но все, что мне нужно было сделать, это перенастроить мой маршрут следующим образом:

 Route::get('coin/search/{keyword?}', ['uses' => 'Coins@doSearch'])->name('coin.search');
 Route::resource('coin' , 'Coins');
0 голосов
/ 05 декабря 2018

Пагинация работает только с параметрами GET.Вы должны использовать метод GET для поиска и нумерации страниц.

POST-запросы не предназначены для отображения данных.Зачем?Причин много.

Я предлагаю вам изменить тип маршрута на GET, а метод поиска - на GET.

...