Quantcast
Channel: laravel5.8タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 87

laravelで外部のサイトへリダイレクトする方法

$
0
0

必要になって調べた、外部のサイトへ様々な状況でリダイレクトする方法のまとめ
特定のページのみ作成しており、すでにある外部ドメインへリダイレクトするときに使いました。

やりたいこと
・外部のサイトへリダイレクト(外部ドメインを指定する)
 - おまけ:バリデーションでNGの場合に特定の外部サイト(外部ドメイン)へリダイレクト


外部のサイトへリダイレクト(外部ドメインを指定する)

phpだとheader関数を使用したりするかと思います

<?php
 header('Location: ' . $url, true, 301);
 exit;

laravelだとredirect()->away()で可能でした。

redirect()->away($url)

urlには前回の.envに書いた外部ドメインへもリダイレクトできました。

redirect()->away(config('test.key_name'));

おまけ:バリデーションエラー時に外部サイトへリダイレクト

laravelはバリデーションエラーの場合、自動的にユーザーを以前のページヘリダイレクトする仕様のようで、
 ・バリデーションエラー時に以前のページではなく指定のページにリダイレクトしたい
 ・なおかつ外部のドメインにしたい
この2つを実現したい場合、FormRequestで実装可能でした。

:sparkles:参考にさせていただきました
FormRequestのバリデーションエラー時のリダイレクト先をカスタマイズする

protected function getRedirectUrl()
    {
        return config('test.key_name');
    }  //バリデーションエラー時は.envで設定した外部ドメインへリダイレクトされる

また、このリダイレクトさせたいURLを.envに書いた外部ドメインにしたい場合、直接 config() のみでリダイレクトでき、
redirect()->away(config('test.key_name')); とすると Header may not contain more than a single header とエラーが出てしまいました。

 
 

validateメソッドや、validatorファサードでもできるか試したのですが、FormRequest以外はエラーがでてしまいうまくできず... :rolling_eyes:

もしvalidateメソッドや、validatorファサードでもできる方法を知っている方がいたら教えていただけると嬉しいです

 

まとめ

redirect()->away() を使う
FormRequestを使えばエラー時にリダイレクト先を任意に指定できる


Viewing all articles
Browse latest Browse all 87

Trending Articles