2017-11-11 189 views
1

我的分頁工作正常,但是當使用搜索組件時,它只顯示結果的第一頁。 沒有搜索的我的頁面URL看起來像: http://localhost:8000/dictionary-management/postcode?page=2 它的工作正常。Laravel:搜索結果搜索?page = 2不顯示任何內容,只是空白頁

我的第一頁與搜索的URL: http://localhost:8000/dictionary-management/postcode/search 它的工作正常。

我的第二頁帶搜索的網址: http://localhost:8000/dictionary-management/postcode/search?page=2 而且沒什麼可顯示的,只有空白頁。

這是我的控制器搜索方法:

public function search(Request $request) { 
    $constraints = [ 
     'postcode' => $request['postcode'], 
     'address' => $request['address'] 
    ]; 

    $postcodes = $this->doSearchingQuery($constraints); 
    return view('dictionary-mgmt/postcode/index', ['postcodes' => $postcodes, 'searchingVals' => $constraints]); 
} 

private function doSearchingQuery($constraints) { 
    $query = Postcode::query(); 
    $fields = array_keys($constraints); 
    $index = 0; 
    foreach ($constraints as $constraint) { 
     if ($constraint != null) { 
      $query = $query->where($fields[$index], 'like', '%'.$constraint.'%'); 
     } 

     $index++; 
    } 
    return $query->Paginate(5); 
} 

這是我的路線:

Route::resource('dictionary-management/postcode', 'PostCodeController'); 
Route::post('dictionary-management/postcode/search', [email protected]')->name('postcode.search'); 

這是我的索引視圖:

@extends('dictionary-mgmt.postcode.base') 
@section('action-content') 
    <!-- Main content --> 
    <section class="content"> 
     <div class="box"> 
    <div class="box-header"> 
    <div class="row"> 
     <div class="col-sm-8"> 
      <h3 class="box-title">List kodów pocztowych</h3> 
     </div> 
     <div class="col-sm-4"> 
      <a class="btn btn-primary pull-right" href="{{ route('postcode.create') }}">Dodaj nowy kod pocztowy</a> 
     </div> 
    </div> 
    </div> 
    <!-- /.box-header --> 
    <div class="box-body"> 
     <div class="row"> 
     <div class="col-sm-6"></div> 
     <div class="col-sm-6"></div> 
     </div> 
     <form method="POST" action="{{ route('postcode.search') }}"> 
     {{ csrf_field() }} 
      @component('layouts.search', ['title' => 'Szukaj']) 
       @component('layouts.two-cols-search-row', ['items' => ['postcode', 'address'], 'title' => ['Kod','Adres'], 
       'oldVals' => [isset($searchingVals) ? $searchingVals['postcode'] : '', isset($searchingVals) ? $searchingVals['address'] : '']]) 
       @endcomponent 
      @endcomponent 
     </form> 
    <div id="example2_wrapper" class="dataTables_wrapper form-inline dt-bootstrap"> 
     <div class="row"> 
     <div class="col-sm-12"> 
      <table id="example2" class="table table-bordered table-hover dataTable" role="grid" aria-describedby="example2_info"> 
      <thead> 
       <tr role="row"> 
       <th width="5%">Kod pocztowy</th> 
       <th width="40%">Adres</th> 
       <th width="10%">Miejscowość</th> 
       <th width="10%">Województwo</th> 
       <th width="10%">Powiat</th> 
       <th>Akcja</th> 
       </tr> 
      </thead> 
      <tbody> 
      @foreach ($postcodes as $postcode) 
       <tr role="row" class="odd"> 
        <td>{{ $postcode->postcode }}</td> 
        <td>{{ $postcode->address }}</td> 
        <td>{{ $postcode->city }}</td> 
        <td>{{ $postcode->voivodeship }}</td> 
        <td>{{ $postcode->county }}</td> 
        <td> 
        <form class="row" method="POST" action="{{ route('postcode.destroy', ['id' => $postcode->id]) }}" onsubmit = "return confirm('Czy napewno usunąć?')"> 
         <input type="hidden" name="_method" value="DELETE"> 
         <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
         <a href="{{ route('postcode.edit', ['id' => $postcode->id]) }}" class="btn btn-warning col-sm-3 col-xs-5 btn-margin"> 
         Edytuj 
         </a> 
         <button type="submit" class="btn btn-danger col-sm-3 col-xs-5 btn-margin"> 
          Usuń 
         </button> 
        </form> 
        </td> 
       </tr> 
      @endforeach 
      </tbody> 
      <tfoot> 
       <tr> 
        <th width="5%">Kod pocztowy</th> 
        <th width="40%">Adres</th> 
        <th width="10%">Miejscowość</th> 
        <th width="10%">Województwo</th> 
        <th width="10%">Powiat</th> 
        <th>Akcja</th> 
       </tr> 
      </tfoot> 
      </table> 
     </div> 
     </div> 
     <div class="row"> 
     <div class="col-sm-5"> 

     </div> 
     <div class="col-sm-7"> 
      <div class="dataTables_paginate paging_simple_numbers" id="example2_paginate"> 
      {{ $postcodes->links() }} 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 
    <!-- /.box-body --> 
</div> 
    </section> 
    <!-- /.content --> 
    </div> 
@endsection 

這是我的搜索組件:

<div class="row"> 
    @php 
    $index = 0; 
    @endphp 
    @foreach ($items as $item) 
    <div class="col-md-6"> 
     <div class="form-group"> 
      @php 
      $stringFormat = strtolower(str_replace(' ', '', $item)); 
      @endphp 
      <label for="input<?=$stringFormat?>" class="col-sm-3 control-label">{{$title[$index]}}</label> 
      <div class="col-sm-9"> 
      <input value="{{isset($oldVals) ? $oldVals[$index] : ''}}" type="text" class="form-control" name="<?=$stringFormat?>" id="input<?=$stringFormat?>" placeholder="{{$title[$index]}}"> 
      </div> 
     </div> 
    </div> 
    @php 
    $index++; 
    @endphp 
    @endforeach 
</div> 

請幫幫忙,我不知道哪裏是我的錯......

回答

0

試試這個

{{ $postcodes->appends(request()->input())->links()}} 

,而不是{{ $postcodes->links() }}

+0

URL改變,包含字段的值,但我怕它不工作 –

+1

我認爲它更好地使用GET方法搜索而不是POST。 – PSA