環境
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')
あなたの回答
tips
プレビュー