0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel小技】url()->previous() の使い方と注意点まとめ【戻るリンクやリダイレクトに便利】

Posted at

はじめに

Laravelでユーザーを「ひとつ前のページ」に戻したいとき、
便利に使えるのが url()->previous() です。

戻るリンクや、処理完了後のリダイレクト、バリデーションエラー時の復帰など、
さまざまな場面で活躍します。

この記事では、url()->previous() の基本的な使い方と注意点についてまとめます。


url()->previous() とは?

Laravelのヘルパーメソッドで、
直前のリクエスト元のURL(前のページ)を取得します。

$url = url()->previous();

内部的には、HTTPヘッダーの Referer 情報を参照しています。

①よくある使い方

  • 1.戻るリンクを作る(Blade)
<a href="{{ url()->previous() }}">戻る</a>

→ ユーザーを直前の画面に戻すナチュラルなリンクが作れます。

  • 2.コントローラーからリダイレクト
public function store(Request $request)
{
    // 保存処理...

    return redirect(url()->previous())->with('message', '投稿が完了しました');
}

→ 処理後に元いたページへ戻すときに便利です。

  • 3.バリデーションエラー後に戻るなら back()
return back()->withErrors($validator)->withInput();

→ これも内部的には url()->previous() を使っていますが、より安全&Laravel流です。

②注意点

Referer ヘッダーが無いと動かない
例えば:

  • ブラウザでURLを直接開いた場合
  • リファラー制限されているページからの遷移
    このようなときは、url()->previous() は nullを返すこともあるので注意。

③url()->previous() と back() の違い

IMG_7779.jpeg

④まとめ

IMG_7780.jpeg
url()->previous() を知っていると、
「ユーザーがどこから来たのか」に基づいたより自然なUI設計ができます!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?