beta

Laravel・Lumenで元いたページ番号のページに戻る方法

Laravel・Lumenでページング処理をしている一覧から何かの処理をいれた後に、元いたページに戻したい時の方法を考えて見たのでまとめました。やり方次第では、ページ番号だけでなくても使えるかもしれません。

公開日:2018年9月4日

redirect()->route()でgetパラメータを渡すだけ

return redirect()->route('PostsList', ['page' => $request->get('page')]);

これだけです。分かる方はこれで完了です。

処理の詳細

それでは、詳しく見ていきましょう。

処理の流れは以下の通りです。

(1) ページング付き一覧ページを表示 (2) 何かDBの処理をするページを表示 (3) 元々いたページ(処理(1)のところ)に戻す

(1) 一覧のformにpage番号を仕込む @ビュー

まずは、コントローラからViewに変数で渡します。

page番号は、Eloquentのpaginateを使っていれば、$request->input(‘page’)で取得できます。

view側ではformかリンクに仕込んでおきます。今回は、$pageという変数でコントローラからViewにページ番号を渡し、formに仕込んでおきます。

<form action="{{route('PostDelete', ['post_id'=>$r->id])}}" method="post">
    <input type="hidden" name="page" value="{{$page}}">
    <button type="submit">削除</button>
</form>

(2) 処理をする @コントローラ

更新やら、削除やら処理をします。

(3) 処理後にリダイレクトする @コントローラ

処理メソッド側(今回ではPostDeleteというルート名でルーティングされているメソッド)には、getリクエストで元々いたページのページ番号が渡されているので、そのままリダイレクトでページ番号を渡します。

class PostsController extends Controller
{
    public function delete(Request $request){
        //何かの処理

        return redirect()->route('PostsList', ['page' => $request->get('page')]);
    }
}

これで何かの処理をした後に、一覧へ戻したい時に、元々のページ番号のページに戻せました。