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'] ?? []);
}