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 할 수 있게 적용해두었다.