Laravel 에서 router {path} validate 하기
Updated on
Route::get('/{name}/info', [Controller::class, 'getItemInfo']);
이런 형태의 router 가 있다고 하면, {name} 값에는 validate 를 걸고 싶을때가 있다.
여기에서 Route ->where 을 사용해서 할 수도 있긴하지만, 그냥 나는 FormRequest 에서 validate 처리하고 있다.
class GetItemInfoRequest extends FormRequest { public function rules(): array { return [ 'name' => ['required', Rule::in(Name::cases())], ]; } public function authorize(): bool { return true; } // 이 아래 function 을 추가 해준다. protected function prepareForValidation(): void { $this->merge([...$this->route()->parameters()]); } }
prepareForValidation
을 추가해주면, Request에서 rules에 route path 까지도 함께 처리할 수 있다.
나는 Name Enum 만 path validate 할 수 있게 적용해두었다.