概要
Laravelで戻るボタンを実装する場合、url()->previous()
を使うと簡単に実装することができる。
- url()ヘルパ関数はIlluminate\Routing\UrlGeneratorインスタンスを返す。
- UrlGeneratorの
previous
メソッドは直前のURLを返す
https://laravel.com/api/10.x/Illuminate/Routing/UrlGenerator.html#method_previous
サンプル
<a href="{{ url()->previous() }}">戻る</a>
javascript:history.back()
を使う、route()ヘルパ関数を使ってroute('item.index')
のようにルートを指定する、など様々な実装方法があると思うが、url()->previous()
が最も簡単であると思われる。
フォーム画面の場合
フォーム送信でバリデーションエラーがあった場合、再度フォーム画面が表示されるため、戻るボタンの遷移先をurl()->previous()
とすると再度フォーム画面が表示されてしまう。
以下のようにoldヘルパ関数を使ってフォームの中に遷移先をtype=”hidden”のinput要素で埋め込み、フォームのPOST送信に遷移先を含める必要がある。<input type="hidden" name="back_url" value={{ old('back_url', url()->previous()) }}>
この場合、戻るボタンは以下のようになる。<a href="{{ old('back_url', url()->previous()) }}">戻る</a>
コメント