123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Customer\Model\Address\Validator;
- use Magento\Customer\Model\Address\AbstractAddress;
- use Magento\Customer\Model\Address\ValidatorInterface;
- /**
- * Address general fields validator.
- */
- class General implements ValidatorInterface
- {
- /**
- * @var \Magento\Eav\Model\Config
- */
- private $eavConfig;
- /**
- * @var \Magento\Directory\Helper\Data
- */
- private $directoryData;
- /**
- * @param \Magento\Eav\Model\Config $eavConfig
- * @param \Magento\Directory\Helper\Data $directoryData
- */
- public function __construct(
- \Magento\Eav\Model\Config $eavConfig,
- \Magento\Directory\Helper\Data $directoryData
- ) {
- $this->eavConfig = $eavConfig;
- $this->directoryData = $directoryData;
- }
- /**
- * @inheritdoc
- */
- public function validate(AbstractAddress $address)
- {
- $errors = array_merge(
- $this->checkRequredFields($address),
- $this->checkOptionalFields($address)
- );
- return $errors;
- }
- /**
- * Check fields that are generally required.
- *
- * @param AbstractAddress $address
- * @return array
- * @throws \Zend_Validate_Exception
- */
- private function checkRequredFields(AbstractAddress $address)
- {
- $errors = [];
- if (!\Zend_Validate::is($address->getFirstname(), 'NotEmpty')) {
- $errors[] = __('"%fieldName" is required. Enter and try again.', ['fieldName' => 'firstname']);
- }
- if (!\Zend_Validate::is($address->getLastname(), 'NotEmpty')) {
- $errors[] = __('"%fieldName" is required. Enter and try again.', ['fieldName' => 'lastname']);
- }
- if (!\Zend_Validate::is($address->getStreetLine(1), 'NotEmpty')) {
- $errors[] = __('"%fieldName" is required. Enter and try again.', ['fieldName' => 'street']);
- }
- if (!\Zend_Validate::is($address->getCity(), 'NotEmpty')) {
- $errors[] = __('"%fieldName" is required. Enter and try again.', ['fieldName' => 'city']);
- }
- return $errors;
- }
- /**
- * Check fields that are conditionally required.
- *
- * @param AbstractAddress $address
- * @return array
- * @throws \Magento\Framework\Exception\LocalizedException
- * @throws \Zend_Validate_Exception
- */
- private function checkOptionalFields(AbstractAddress $address)
- {
- $errors = [];
- if ($this->isTelephoneRequired()
- && !\Zend_Validate::is($address->getTelephone(), 'NotEmpty')
- ) {
- $errors[] = __('"%fieldName" is required. Enter and try again.', ['fieldName' => 'telephone']);
- }
- if ($this->isFaxRequired()
- && !\Zend_Validate::is($address->getFax(), 'NotEmpty')
- ) {
- $errors[] = __('"%fieldName" is required. Enter and try again.', ['fieldName' => 'fax']);
- }
- if ($this->isCompanyRequired()
- && !\Zend_Validate::is($address->getCompany(), 'NotEmpty')
- ) {
- $errors[] = __('"%fieldName" is required. Enter and try again.', ['fieldName' => 'company']);
- }
- $havingOptionalZip = $this->directoryData->getCountriesWithOptionalZip();
- if (!in_array($address->getCountryId(), $havingOptionalZip)
- && !\Zend_Validate::is($address->getPostcode(), 'NotEmpty')
- ) {
- $errors[] = __('"%fieldName" is required. Enter and try again.', ['fieldName' => 'postcode']);
- }
- return $errors;
- }
- /**
- * Check if company field required in configuration.
- *
- * @return bool
- * @throws \Magento\Framework\Exception\LocalizedException
- */
- private function isCompanyRequired()
- {
- return $this->eavConfig->getAttribute('customer_address', 'company')->getIsRequired();
- }
- /**
- * Check if telephone field required in configuration.
- *
- * @return bool
- * @throws \Magento\Framework\Exception\LocalizedException
- */
- private function isTelephoneRequired()
- {
- return $this->eavConfig->getAttribute('customer_address', 'telephone')->getIsRequired();
- }
- /**
- * Check if fax field required in configuration.
- *
- * @return bool
- * @throws \Magento\Framework\Exception\LocalizedException
- */
- private function isFaxRequired()
- {
- return $this->eavConfig->getAttribute('customer_address', 'fax')->getIsRequired();
- }
- }
|