【Laravel】リダイレクトしようとしたら同じURLにしか飛ばなくなった時の備忘録

事象
--
処理後のリダイレクトをしたいのに、今いるURLにしか飛ばず更新処理もなにもされない。

経緯
--
最近Laravelでゲームマスタデータの管理をするWebアプリを開発中、データの更新処理後に一覧ページに戻ってメッセージを表示するという基本的な処理を実装していました。

※ソースは実際のものから変数名などだけ修正しています。
[web.php]
> //登録画面表示
Route::get('/master', 'Create\CreateMasterController@index')->name('index');
//登録処理
Route::post('/master', 'Create\CreateMasterController@insert')->name('insert_race');
//編集画面表示
Route::get('/master/{edit_id}', 'Create\CreateMasterController@edittemplate')->name('update_race_temp');
//編集更新処理
Route::patch('/master/update/cmp', 'Create\CreateMasterController@editcomplate')->name('update_race');

[Controller]
```php
/**
     * Show the application dashboard.
     *
     * @return 登録画面(初期画面)
     */
    public function index()
    {
        $list = $this->repository->selectAllList();
        $iconLink = $this->repository->ICONFILE_DIR;

        return view('create/master/index', compact('list', 'iconLink'));
    }

    /**
     * 処理完了後のリダイレクトする処理
     */
    private function indexview($var, $result){
        return redirect()->route('index')->with(['message' => $var, 'result' => $result]);
    }

    /**
     * 登録
     * @return 登録処理
     */
    public function insert(MasterFormRequest $form){
        $target = $this->repository->selectEditMaster($form->id);
        if($target){
            return $this->indexview('既に登録されているIDです', 4);
        }

        $this->repository->addMaster($form);
        return $this->indexview('登録が完了しました', 2);
    }

    /**
     * 編集画面へ遷移
     * @return 編集画面
     */
    public function edittemplate(Request $request){
        $target = $this->repository->selectEditMaster($request->edit_id);
        if(!$target){
            return $this->indexview('ID:'.$request->edit_id.'のデータが取得できませんでした', 4);
        }

       $list = $this->repository->selectAllList();
       $iconLink = $this->repository->ICONFILE_DIR;

       return view('create/master/edit',
         compact('list', 'iconLink', 'target')
        );
    }

    /**
     * 更新処理
     * @return 更新結果画面
     */
    public function editcomplate(MasterEditFormRequest $form){
        $target = $this->repository->selectEditMaster($form->id);
        if(!$target){
            return $this->indexview('ID:'.$form->id.'のデータが取得できませんでした',4);
        }
        $this->repository->updateMaster($form);

        return $this->indexview('更新が完了しました', 2);
    }

    /**
     * 削除
     * @return 削除した情報
     */
    public function delete(Request $request){
        $target = $this->repository->selectEditmaster($request->delete_id);
        if(!$target){
            return $this->indexview('ID:'.$request->delete_id.'のデータが取得できませんでした',4);
        }

       $delete = $this->repository->delete($request->delete_id);

       return $this->indexview('ID:'.$request->delete_id.'の削除が完了しました',2);
    }
```

[View]
```html
<div>
　　　　編集フォーム
		<form action="{{ route('update_race') }}" method="POST">
			@csrf
            @method('PATCH')
			<div class="col-md-3">
				<label for="validationDefault01" class="form-label">データID</label>
				<input type="text" readonly class="form-control" id="validationDefault01" name='id' value="{{$target->id}}" required/>
			</div>
			<div class="col-md-3">
				<label for="validationDefault02" class="form-label">名</label>
				<input type="text" class="form-control" id="validationDefault02" name='name' value="{{$target->name}}" required/>
			</div>
			<div class="col-md-3">
				<label class="form-label">説明文</label>
				<input type="textarea" name='discription' value="{{$target->discription}}" />
			</div>
			<div class="col-md-3">
				<label class="form-label">アイコン画像ファイル</label>
				<label>ファイル名 : <p>{{$target->icon}}</p></label>
				<image src="{{ asset('storage/image/'.$target->race_icon) }}"></image>
				<input type="file" name='icon' value="/" />
			</div>
			<input type="submit" value="更新" />
		</form>
	</div>
```

Form内に変なaction属性があるのか？更新ボタンがForm内にないとか？同じURLだとgetが優先されている？
(/master/{edit_id}があるので/master/cmpがURLパラメータ固定のものだと認識されたのかと…)
などいろいろ考えましたが凡ミスでした。

原因
--
Controllerの引数で自身で追加したRequestFormを使っているのですが、ViewのFormのパラメータと引数のFormのパラメータがあっていないため認識されていなかったっぽい？です。
（詳細は調べてません。何か気づいたら追記します）

[MasterFormRequest.php]
```php
class MasterFormRequest extends FormRequest
{
    public function rules()
    {
        return [
            'id' => ['required','integer'],
            'name' => ['required','max:10'],
            'discription' => ['required','max:255'],
            'icon' => [],
        ];
    }
}
```

[MasterEditFormRequest.php]
使わなくなったのに引数に指定したままだったForm
必要なIDだけ渡すように作っていましたが、URLパラメータで事足りることに気づき使わなくなりました。
```php
class MasterEditFormRequest extends FormRequest
{
    public function rules()
    {
        return [
            'id' => ['required','integer'],
        ];
    }
}
```
解決
--
Controllerのeditcomplateで使っているところを、登録処理と同じRequesttForm「MasterFormRequest」で変えたらちゃんと処理が進むようになりました。

あまりの凡ミスに、気付いたときは呆気にとられましたがLaravelの何か特殊な仕様などでなくてよかったです…。