Postcode.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Model\Metadata\Form;
  7. use Magento\Customer\Api\Data\AttributeMetadataInterface;
  8. use Magento\Customer\Model\Metadata\ElementFactory;
  9. use Magento\Directory\Helper\Data as DirectoryHelper;
  10. use Magento\Framework\Locale\ResolverInterface;
  11. use Psr\Log\LoggerInterface as PsrLogger;
  12. use Magento\Framework\Stdlib\DateTime\TimezoneInterface as MagentoTimezone;
  13. /**
  14. * Customer Address Postal/Zip Code Attribute Data Model
  15. */
  16. class Postcode extends AbstractData
  17. {
  18. /**
  19. * @var DirectoryHelper
  20. */
  21. protected $directoryHelper;
  22. /**
  23. * @param MagentoTimezone $localeDate
  24. * @param PsrLogger $logger
  25. * @param AttributeMetadataInterface $attribute
  26. * @param ResolverInterface $localeResolver
  27. * @param string $value
  28. * @param string $entityTypeCode
  29. * @param bool $isAjax
  30. * @param DirectoryHelper $directoryHelper
  31. */
  32. public function __construct(
  33. MagentoTimezone $localeDate,
  34. PsrLogger $logger,
  35. AttributeMetadataInterface $attribute,
  36. ResolverInterface $localeResolver,
  37. $value,
  38. $entityTypeCode,
  39. $isAjax,
  40. DirectoryHelper $directoryHelper
  41. ) {
  42. $this->directoryHelper = $directoryHelper;
  43. parent::__construct(
  44. $localeDate,
  45. $logger,
  46. $attribute,
  47. $localeResolver,
  48. $value,
  49. $entityTypeCode,
  50. $isAjax
  51. );
  52. }
  53. /**
  54. * Validate postal/zip code
  55. * Return true and skip validation if country zip code is optional
  56. *
  57. * @param array|null|string $value
  58. * @return array|bool
  59. */
  60. public function validateValue($value)
  61. {
  62. $attribute = $this->getAttribute();
  63. $label = __($attribute->getStoreLabel());
  64. $countryId = $this->getExtractedData('country_id');
  65. if ($this->directoryHelper->isZipCodeOptional($countryId)) {
  66. return true;
  67. }
  68. $errors = [];
  69. if (empty($value) && $value !== '0') {
  70. $errors[] = __('"%1" is a required value.', $label);
  71. }
  72. if (count($errors) == 0) {
  73. return true;
  74. }
  75. return $errors;
  76. }
  77. /**
  78. * {@inheritdoc}
  79. */
  80. public function extractValue(\Magento\Framework\App\RequestInterface $request)
  81. {
  82. return $this->_applyInputFilter($this->_getRequestValue($request));
  83. }
  84. /**
  85. * {@inheritdoc}
  86. */
  87. public function compactValue($value)
  88. {
  89. return $value;
  90. }
  91. /**
  92. * {@inheritdoc}
  93. */
  94. public function restoreValue($value)
  95. {
  96. return $this->compactValue($value);
  97. }
  98. /**
  99. * {@inheritdoc}
  100. */
  101. public function outputValue($format = ElementFactory::OUTPUT_FORMAT_TEXT)
  102. {
  103. return $this->_applyOutputFilter($this->_value);
  104. }
  105. }