2016-08-15 4 views
0

私のアプリケーションのインデックスページに検索フォームを適用しました。検索結果が更新されます。しかし、ページネーションをクリックすると、古い結果に戻ってきます。だから、ページネーションを更新したり、キャッシュや何かをクリアしたり、やり方を更新したりしていると思いますか? welcome.blade.phpLaravel 5.2ページめくりをクリックすると新しい検索結果が古いものに戻る

BookmarkController.php

public function index(Request $request) { 
    $tags_list = Tag::orderBy('tag', 'asc')->get(); 
    $bookmarks = Bookmark::orderBy('created_at', 'desc')->where('public', '1')->paginate(3); 
    $bookmarks_all = Bookmark::orderBy('created_at','desc')->where('public', '1')->get(); 

    return view('welcome') 
     ->with('bookmark', $bookmarks) 
     ->with('tags_list', $tags_list) 
     ->with('bookmarks_all', $bookmarks_all) 
    ; 
} 

public function search(Request $request) { 
    $search_value = $_POST['search']; 
    $tags_list = Tag::orderBy('tag', 'asc')->get(); 
    $bookmarks = Bookmark::orderBy('created_at', 'desc') 
     ->where('public', '1') 
     ->where('title', 'rlike', $search_value) 
     ->orwhere('description', 'rlike', $search_value) 
     ->orwhere('contents', 'rlike', $search_value) 
     ->orwhere('tags', 'rlike', $search_value) 
     ->paginate(3) 
    ; 

    $bookmarks_all = Bookmark::orderBy('created_at', 'desc')->where('public', '1')->get(); 

    return view('welcome') 
     ->with('bookmark', $bookmarks) 
     ->with('tags_list', $tags_list) 
     ->with('bookmarks_all', $bookmarks_all) 
     ->render() 
    ; 
} 

@if (count($bookmark) > 0) 
      <div class="row card-row"> 
      @foreach ($bookmark as $bookmark_single) 
       <div class="col-sm-4 col-xs-12 card-parent" data-col="col-sm-4"> 
        <div class="card"> 
         <div class="card-part1"> 
          <div class="img-card"> 
           <img src="{{$bookmark_single->thumbnail}}" /> 
          </div> 
          <div class="card-content"> 
           <h4 class="card-title"> 
            {{ $bookmark_single->title }} 
           </h4> 
           <div class="card-desc"> 
            {{ str_limit($bookmark_single->description, $limit = 50, $end = ' [...]') }} 
           </div> 
          </div> 
          <div class="card-read-more"> 
           <p><?php $tags = $bookmark_single->tags; 
            $tag_list = explode(',', $tags); ?> 
            @foreach ($tag_list as $tag) 
             <a href="/tag/{{$tag}}" class="label label-primary">{{$tag}}</a> 
            @endforeach 
           </p> 
           <p class="card-user">- &nbsp;<a href="/user/{{ $bookmark_single->bookmarker }}">{{ $bookmark_single->bookmarker }}</a></p> 
           <a class="v-link" target="_blank" href="{{ $bookmark_single->url }}">Visit the link</a> 
          </div> 
          <button type="button" class="btn btn-success btn-circle btn-lg btn-read-more"><i class="fa fa-chevron-right"></i></button> 
         </div> 

         <div class="card-part2 col-xs-0"> 
          {{ print $bookmark_single->contents }} 
         </div> 
        </div> 
       </div> 
      @endforeach 
      </div> 
      <div class="clearfix text-right"> 
       {{!!$bookmark->render()!!}} 
      </div> 
     @endif 

welcome.blade.phpで検索フォームをHTMLで

routes.php

Route::get('/', '[email protected]'); 
Route::post('/', '[email protected]'); 

答えて

0

あなたはページネーションのリンクをクリックしあなたが同じページへget要求を開始し、ここで[email protected]

一つの可能​​な解決策を使用していますget代わりのpostのように探索経路を変更することで、あなたの最初のルートに終わります:

Route::post('/search', '[email protected]'); 

とあなたの改ページが検索/のように、この新しいルートに適用されることを確認してください?ページ= 2

あなたはで検索ログインを維持したい場合あなたが検索フィルタの非はそれが

public function index(Request $request) { 
    $tags_list = Tag::orderBy('tag', 'asc')->get(); 
    $bookmarks_all = Bookmark::orderBy('created_at','desc')->where('public', '1')->get(); 

    $search_value = $request->input('search', ''); 

    $bookmarks = Bookmark::where(function($query) use ($search_value) { 
     if (!empty($search_value)) { 
      $query->where('title', 'rlike', $search_value) 
      ->orwhere('description', 'rlike', $search_value) 
      ->orwhere('contents', 'rlike', $search_value) 
      ->orwhere('tags', 'rlike', $search_value) 
     } 
    })->where('public', '1')->orderBy('created_at', 'desc')->paginate(3); 

    return view('welcome') 
     ->with('bookmark', $bookmarks) 
     ->with('tags_list', $tags_list) 
     ->with('bookmarks_all', $bookmarks_all) 
    ; 
} 

空白ですので、get

+0

に検索フォームmethodを変更する場合は、インデックスページに結果を表示する方法はありません?適用することを確認する必要があり方法 –

+0

できますが、空白の場合は検索フィルタが適用されないようにコードを変更する必要があります –

+0

どうすればいいのですか?私の最初のアプリはLaravelを使って作業しています。だから非常に限られたアイデア –

関連する問題