resultJsonFactory = $resultJsonFactory; $this->formFactory = $formFactory; } /** * AJAX customer address validation action * * @return Json */ public function execute(): Json { /** @var \Magento\Framework\DataObject $response */ $response = new \Magento\Framework\DataObject(); $response->setError(false); /** @var \Magento\Framework\DataObject $validatedResponse */ $validatedResponse = $this->validateCustomerAddress($response); $resultJson = $this->resultJsonFactory->create(); if ($validatedResponse->getError()) { $validatedResponse->setError(true); $validatedResponse->setMessages($response->getMessages()); } $resultJson->setData($validatedResponse); return $resultJson; } /** * Customer address validation. * * @param DataObject $response * @return \Magento\Framework\DataObject */ private function validateCustomerAddress(DataObject $response): DataObject { $addressForm = $this->formFactory->create('customer_address', 'adminhtml_customer_address'); $formData = $addressForm->extractData($this->getRequest()); $errors = $addressForm->validateData($formData); if ($errors !== true) { $messages = $response->hasMessages() ? $response->getMessages() : []; foreach ($errors as $error) { $messages[] = $error; } $response->setMessages($messages); $response->setError(true); } return $response; } }