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

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

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

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

0回答

914閲覧

Authのルーティングをワイルドカードで指定したい

misskabu

総合スコア28

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2021/01/20 14:03

編集2021/01/21 13:33

環境
Laravel 5.5.50
PHP 7.3.11
MacOS X catalina

やりたい事
Laravelで計画書管理システムを作成しております。
このシステムを複数の利用団体に対応させるため、DBとURLを利用団体ごとに分離させようとしています。

各利用団体ごとにアクセスさせるURLは違いますが、対応させるDBが変わるだけでAP部分は共同にしたいです。

例えば
http://www.hoge.com//manage-system/user-group-a/index.html
http://www.hoge.com//manage-system/user-group-b/index.html
http://www.hoge.com//manage-system/user-group-c/index.html

の、どのurlにアクセスされても
Route::get('/','IndexController@index');
に集約されるというイメージです。

その上で、URLパターンのuser-group-xによって.envファイルを切り替える処理にしたいと考えております。

そこで以下のようにweb.phpをRoute::groupで囲ったところ、ほとんどのページは思うようできたのですが、Auth関係のページがエラーになり画面を表示できなくなりました。

Route::group(['prefix' => '{group_id}'],function() { Route::get('/','IndexController@index'); Route::get('login', 'Auth\LoginController@showLoginForm')->name('login'); Route::post('login', 'Auth\LoginController@login'); Route::post('logout', 'Auth\LoginController@logout')->name('logout'); Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register'); Route::post('register', 'Auth\RegisterController@register'); Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request'); Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email'); Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset'); Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update'); });

エラー画面↓
イメージ説明

一見すると、ログイン画面にURLパラメータは必要なさそうなのですが、Route::group内で使用したワイルドカードがパラメータとして邪魔をしているのかもしれません。

該当のauth/login.blade.phpですが、
@extends('layouts.app')
の1行を残して他を全部消してもエラーになります。
逆にそれだけ消して他を残してもエラーになります。
ただし、このページの中身を全て消して、ベタ書きで
TESTなどと書くとそれは表示できるのでbladeまでのリンクは通っているようです。

どなたかご教授願えませんか?

追記
検証中でパワープレイですが、以下のようにすると一応、振り分けはできそうです。
ワイルドカード使う代わりに、必要なURLパターンを全部ハードコーディングしています。
ただ、いかにも運用でカバーという酷いコードなのでまともな解決法を引き続き募集させていただきます。

Route::group(['prefix' => 'aaa'],function(){ Auth::routes(); }); Route::group(['prefix' => 'bbb'],function(){ Auth::routes(); }); Route::get('/facility/edit','FacilityManage\FacilityController@edit')->middleware('auth')

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問