ABO ファクトリーのブログ

3PS(3Dプリンター共有)サービスの開発 趣味のプログラム。3Dプリンターを利用した作品を行うサークルとして活動していきたいと思います。

Laravel5のページジェネレーションでGETのパラメータが引き継げないと焦った件

結論は引き継げます。すでにリリースしててバグだったので焦りました。
同じことでハマる人がいると思うのでメモ。


例えばユーザメッセージの一覧を表示させる場合、コントローラー側で以下のように書きます。(20行づつを1ページとして表示)

$msg_array = Msg::find($user->id)->orderBy('created_at', 'DESC')->paginate(20);


これをView側でページ部分を表示させようとすると以下のように書くのは既存です。
{!! $msg_array->render() !!}


でも、URLがhttp://xxxx.com/msg?toid=yyのようにGETパラメータをついている状態で生成されたリンク先に飛ぶとエラー・・!?

生成されたリンクを見てみると以下のようにできていました。
http://xxxx.com/msg/?page=2

なんじゃこりゃ・・ということでググって見たら日本のサイトが見つからない・・・・
やばいということで英単語で区切ったら海外のサイトで発見

View側を以下のようにしないといけないとのこと
{!! $msg_array->render() !!}
    ↓
{!! $msg_array->appends(Input::except('page'))->render() !!}

page以外のGETパラメータをアペンドするという形でOKみたいです。
いや、ページジェネレーションの機能が便利すぎて多用してましたがバグを見つけたときは自作しないといけないのかと思いめちゃくちゃ焦りました。良かった♪

f:id:abofactory:20150526195046j:plain