質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Q&A

0回答

884閲覧

【Laravel 7】ユーザー登録後、日本語か英語のページにリダイレクトさせたい

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

0グッド

0クリップ

投稿2021/07/02 00:03

前提・実現したいこと

Laravel で日本語と英語に対応したサイトを作成しており、
Laravel の認証機能を使ってユーザー登録のページを作成しています。
なのでトップページや規約、ログイン画面やユーザー登録のページ全てに日本語と英語のページが存在します。

【日本語】

  • /jp (日本語トップページ)
  • /jp/register (日本語ユーザー登録画面)
  • /jp/login(日本語ログイン画面)
  • など…

【英語】

  • /en (英語トップページ)
  • /en/register (英語ユーザー登録画面)
  • /en/login (英語ログイン画面)
  • など…

発生している問題・エラーメッセージ

日本語パターン

  1. 日本語のトップページ [ /jp ]
  2. 日本語のユーザー登録ページ [ /jp/register ]
  3. 登録完了後、日本語のトップページにリダイレクト [ /jp ]

英語パターン

  1. 英語のトップページ [ /en ]
  2. 英語のユーザー登録ページ [ /en/register ]
  3. 登録完了後、英語のトップページにリダイレクト [ /en/register ]

という2パターンが想定されますが、こういった処理の作成が実装できません。

Laravel標準のAuth機能を確認したところ、

app/Providers/RouteServiceProvider.php

public const HOME = ‘/’
の値にリダイレクトされるようでした。
ここを、日本語ページ(jp/register)から登録した場合は /jp に、英語ページ(en/register)から登録した場合は /enに
したいと思いますが、そういった方法はあるでしょうか。

試したこと

Auth/RegisterController.php
を確認したところ
protected $redirectTo = RouteServiceProvider::HOME;

こちらのプロパティが上記のリダイレクト先になっているようなのですが、LoginController.phpがあることを考えると、RouteServiceProvider.phpを修正した方が良いかと考えています。

URLの jp と en は

php

1//routes.php 2Route::pattern('lang', 'jp|en'); 3Route::group(['prefix' => '{lang?}'], function(){ 4 Route::get('/','MainController@jpIndex')->name('jpIndex'); 5 Route::get('register','Auth\RegisterController@showRegistrationForm')->name('register'); 6 Route::post('register', 'Auth\RegisterController@register'); 7});

のようにルートパラメータにしているので、これを RouteServiceProvider.php で取得できればと思ったのですが、そういった方法は見つかっていないという状況です。

ログイン状態の際のリダイレクトは

php

1//RedirectIfAuthenticated.php 2 public function handle($request, Closure $next, $guard = null) 3 { 4 if (Auth::guard($guard)->check()) { 5 return redirect('/'.$request->route('lang')); 6 } 7 8 return $next($request); 9 }

こちらのように設定できたので、ユーザー登録やログイン画面もこのようにできればと考えております。
RouteServiceProvider.php にも同じようなコードを書いてみたのですが、$requestの値を呼び出すことができません。

至らぬ点もあるかとは思いますが、よろしくお願い致します。

補足情報(FW/ツールのバージョンなど)

Laravelのバージョンは7を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問