1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Customer\Controller\Adminhtml\Index;
- use Magento\Framework\App\Action\HttpGetActionInterface;
- use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface;
- use Magento\Customer\Api\Data\CustomerInterface;
- use Magento\Framework\Message\Error;
- use Magento\Customer\Controller\Adminhtml\Index as CustomerAction;
- /**
- * Class for validation of customer
- */
- class Validate extends CustomerAction implements HttpPostActionInterface, HttpGetActionInterface
- {
- /**
- * Customer validation
- *
- * @param \Magento\Framework\DataObject $response
- * @return CustomerInterface|null
- */
- protected function _validateCustomer($response)
- {
- $customer = null;
- $errors = [];
- try {
- /** @var CustomerInterface $customer */
- $customer = $this->customerDataFactory->create();
- $customerForm = $this->_formFactory->create(
- 'customer',
- 'adminhtml_customer',
- [],
- true
- );
- $customerForm->setInvisibleIgnored(true);
- $data = $customerForm->extractData($this->getRequest(), 'customer');
- if ($customer->getWebsiteId()) {
- unset($data['website_id']);
- }
- $this->dataObjectHelper->populateWithArray(
- $customer,
- $data,
- \Magento\Customer\Api\Data\CustomerInterface::class
- );
- $submittedData = $this->getRequest()->getParam('customer');
- if (isset($submittedData['entity_id'])) {
- $entity_id = $submittedData['entity_id'];
- $customer->setId($entity_id);
- }
- $errors = $this->customerAccountManagement->validate($customer)->getMessages();
- } catch (\Magento\Framework\Validator\Exception $exception) {
- /* @var $error Error */
- foreach ($exception->getMessages(\Magento\Framework\Message\MessageInterface::TYPE_ERROR) as $error) {
- $errors[] = $error->getText();
- }
- }
- if ($errors) {
- $messages = $response->hasMessages() ? $response->getMessages() : [];
- foreach ($errors as $error) {
- $messages[] = $error;
- }
- $response->setMessages($messages);
- $response->setError(1);
- }
- return $customer;
- }
- /**
- * AJAX customer validation action
- *
- * @return \Magento\Framework\Controller\Result\Json
- */
- public function execute()
- {
- $response = new \Magento\Framework\DataObject();
- $response->setError(0);
- $this->_validateCustomer($response);
- $resultJson = $this->resultJsonFactory->create();
- if ($response->getError()) {
- $response->setError(true);
- $response->setMessages($response->getMessages());
- }
- $resultJson->setData($response);
- return $resultJson;
- }
- }
|