livewire api request errorBag 처리
Updated on
livewire 에서 직접 데이터를 처리하지 않고, livewire -> api 를 통해서 처리하는 경우가 있는데,
이때 복잡하게 validate를 처리할 필요 없이, laravel request validate를 그대로 사용할 수 있다.
- modal 열때에는 errorBag 메세지를 초기화해준다.
$this->resetErrorBag();
- guzzle client request 호출 후, 422 반환 시 MessageBag 반환
$response = $client->request('POST', "주소"); $responseData = json_decode($response->getBody()->getContents(), true); if ($response->getStatusCode() === 422) { return new MessageBag($responseData['errors'] ?? []); }
- livewire function 단에서 반환받은 $response 에 대한 처리
if ($responseData instanceof MessageBag) { $this->setErrorBag($responseData); return; }
- 더 좋은 방법, 근데 이걸 client request 에서 처리하면 안되고 MessageBag 으로 한번 처리 후 처리하는게 좋아보임. (이 방식은 나중에 업데이트 하겠음)
if ($response->getStatusCode() === 422) { throw ValidationException::withMessages($responseData['errors'] ?? []); }