Laravelで検索フォームにページネーションを追加する

前回の記事の続きで、検索フォームにページネーションを追加してみます。

サンプルコード

app\Http\Controllers\SearchController.php

<?php
 
namespace App\Http\Controllers;
 
use App\Autumn2016;
use Request;
 
class SearchController extends Controller
{
    public function getIndex()
    {
        // 検索するテキスト取得
        $s_title = Request::get('s_title');
        $s_category = Request::get('s_category');
        $s_production = Request::get('s_production');
        $s_actor = Request::get('s_actor');
        $query = Autumn2016::query();
        // 検索するテキストが入力されている場合のみ
        if(!empty($s_title)) {
            $query->where('title', 'like', '%'.$s_title.'%');
        }
        if(!empty($s_category)) {
            $query->where('category', 'like', '%'.$s_category.'%');
        }
        if(!empty($s_production)) {
            $query->where('production', 'like', '%'.$s_production.'%');
        }
        if(!empty($s_actor)) {
            $query->where('actor', 'like', '%'.$s_actor.'%');
        }
        $data = $query->paginate(3);
        return view('search.index', compact('data', 's_title', 's_category', 's_production', 's_actor'));
    }
}

ページネーションのURLに検索用のパラメータを付与するようにします。

resources\views\search\index.blade.php

{!! Form::open(['method' => 'GET']) !!}
    タイトル:{!! Form::text('s_title', $s_title) !!}
    カテゴリ:{!! Form::text('s_category', $s_category) !!}
    制作会社:{!! Form::text('s_production', $s_production) !!}
    声優:{!! Form::text('s_actor', $s_actor) !!}
    {!! Form::submit('検索') !!}
{!! Form::close() !!}

@foreach($data as $item)
<div>
    <div>{{{ $item->id }}}</div>
    <div>{{{ $item->title }}}</div>
    <div>{{{ $item->category }}}</div>
    <div>{{{ $item->production }}}</div>
    <div>{{{ $item->actor }}}</div>
</div>
<hr>
@endforeach
{{ $data->appends(['s_title'=>$s_title,'s_category'=>$s_category,'s_production'=>$s_production,'s_actor'=>$s_actor])->links() }}

カテゴリに「漫画」と入れて検索すると、以下のように表示されました。

to-add-a-pagination-to-search-form-laravel01

次のページへ移動しても、検索内容が維持されています。

to-add-a-pagination-to-search-form-laravel02

 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年4月
 123456
78910111213
14151617181920
21222324252627
282930