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