質問: ### 前提 当方mac OS Mojave10.14.2にてWebサイトを作成しております。 ### やりたいこと サイトの利用者が文章をアップロードできる仕組みで、 アップロード画面→アップロード確認画面→アップロード完了画面 の遷移なのですが、 アップロード確認画面のurlに対して直アクセスした際、 下記の挙動をさせたいです。 1~3全て一般的な話かと存じますので、「普通はこうする」 といったものがあればご教示頂きたいです。 1. ログイン済で、アップロード画面からアクセスした場合 →アップロード画面にて入力した内容を受け取り、表示 2. ログイン済で、アップロード画面以外からアクセスした場合 →アップロード画面を表示 3. 未ログインで直接urlにアクセスした場合 →ログイン画面を表示し、ログインボタン押下後アップロード画面を表示 ### 現状 下記のルーティングで、上記やりたいことはできているのですが、 2番(未ログインで直接urlにアクセスした場合)に、 アップロード確認画面のurl(upload_case_confirm)で、 アップロード画面が表示されるので、これでいいのかどうかが気になっています。 ``` Route::get('/upload_case', 'UploadcaseController@upload_case')->name('upload_case')->middleware('auth'); Route::get('/upload_case_confirm', 'UploadcaseController@upload_case')->middleware('auth'); Route::post('/upload_case_confirm', 'UploadcaseController@upload_case_confirm')->name('upload_case_confirm')->middleware('auth'); Route::post('/upload_case_done', 'UploadcaseController@upload_case_done')->name('upload_case_done')->middleware('auth'); ``` また、非公式Laravel日本語版ドキュメント(https://readouble.com/laravel/5.5/ja/routing.html )にて記載のあるmatchも下記のようにして試してみましたが、こちらの場合はコントローラー側で、 getの場合はアップロード画面を表示、postの場合はアップロード画面にて入力した内容を受け取り確認画面を表示 という処理の分岐を書かなければならないかと存じます。 そういった分岐をコントローラー側でどう行うのか、またそもそもコントローラー側で処理してよいのかどうか、 判断がついておりません。 ``` Route::get('/upload_case', 'UploadcaseController@upload_case')->name('upload_case')->middleware('auth'); Route::match(['get', 'post'], 'UploadcaseController@upload_case_confirm')->name('upload_case_confirm')->middleware('auth'); Route::post('/upload_case_done', 'UploadcaseController@upload_case_done')->name('upload_case_done')->middleware('auth'); ``` 宜しくお願い致します。
回答: 失礼いたしました。 下記質問を参考に、 下記の通りで解決致しました。 ``` Route::get('/upload_case', 'UploadcaseController@upload_case')->name('upload_case')->middleware('auth'); Route::get('/upload_case_confirm', function () {return redirect('/upload_case');})->name('upload_case_confirm')->middleware('auth'); Route::post('/upload_case_confirm', 'UploadcaseController@upload_case_confirm')->name('upload_case_confirm')->middleware('auth'); Route::post('/upload_case_done', 'UploadcaseController@upload_case_done')->name('upload_case_done')->middleware('auth'); ```