エラーは発生しておりません。
ただ
「どっちの方がより最適なんだろう?」
というのが判断できず教えていただきたいです、、、
質問内容
1.Bladeファイルの条件分岐はURLによる分岐で良いか 2.Controllerの条件分岐はinputの有無による分岐で良いか
条件分岐のベストプラクティス(エラーが出ない)について知りたいです。
DBへの登録機能を実装しております。
<form>タグで<input>の値を渡してcontrollerでDB登録といった基本的な形です。 APIは使っておりません。異なるURLに対して、同じbladeファイル及びcontrollerファイルを使い回して、URLやinputの有無によって条件分岐させて「表示」及び「登録」機能を実装しております。
その際、「条件分岐」の方法がいくつかあるため、「いずれの方法がエラーが起きない設計になるんだろう?」の解がわからず、質問させていただきたいです。
既に問題なく動作は確認済みです。
【条件分岐例】
例1.createのcontrollerでsessionを渡す
例2.URLによる条件分岐
例3.inputの有無による条件分岐
例4.その他
現状
同じbladeファイル、同じcontrollerを使い回して登録機能を実装しております。
// ルーティング設定 Route::get('/register-teacher', [RegisteredController::class, 'create']); Route::get('/register-student', [RegisteredController::class, 'create']); Route::post('/register-teacher', [RegisteredController::class, 'store'])->name('register.user'); Route::post('/register-student', [RegisteredController::class, 'store'])->name('register.user');
blade
1<form method="POST" action="{{ route('register.user') }}"> 2 <input name="name" type="text"> 3 <input name="password" type="password"> 4 @if(Request::is('register-user')) 5 <input name="student-name" type="text"> 6 @elseif(Request::is('register-user')) 7 <input name="teacher-name" type="text"> 8 @endif 9 <button type="submit">登録</button> 10</form>
RegisteredController.php
1// 関数のみ抜粋 2public function create(array $input) 3{ 4 // 先生の場合 5 if($input['teacher-name']) { 6 // バリデーションチェック 7 Validator::make($input, [ 8 'name' => ['required', 'string', 'max:255'], 9 'password' => ['required', 'string', 'max:255' ,new Password, 'confirmed'], 10 'teacher-name' => ['required', 'string', 'max:255'] 11 ])->validate(); 12 13 // DB登録フロー 14 $account = Account::create([ 15 'name' => $input['name'], 16 'password' => Hash::make($input['password']), 17 'teacher-name' => $input['teacher-name'], 18 ]); 19 // 生徒の場合 20 } elseif($input['student-name']) { 21 // バリデーションチェック 22 Validator::make($input, [ 23 'name' => ['required', 'string', 'max:255'], 24 'password' => ['required', 'string', 'max:255' ,new Password, 'confirmed'], 25 'student-name' => ['required', 'string', 'max:255'] 26 ])->validate(); 27 28 // DB登録フロー 29 $account = Account::create([ 30 'name' => $input['name'], 31 'password' => Hash::make($input['password']), 32 'student-name' => $input['student-name'], 33 ]); 34 } 35}
添付したコードに問題がある場合、またはより最適な方法がある等ありましたら、教えていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー