Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Date.php
Go to the documentation of this file.
1 <?php
7 
9 
15 class Date extends \Magento\Eav\Model\Attribute\Data\AbstractData
16 {
24  {
25  $value = $this->_getRequestValue($request);
26  return $this->_applyInputFilter($value);
27  }
28 
38  public function validateValue($value)
39  {
40  $errors = [];
41  $attribute = $this->getAttribute();
42 
43  if ($value === false) {
44  // try to load original value and validate it
45  $value = $this->getEntity()->getDataUsingMethod($attribute->getAttributeCode());
46  }
47 
48  if ($attribute->getIsRequired() && empty($value)) {
49  $label = __($attribute->getStoreLabel());
50  $errors[] = __('"%1" is a required value.', $label);
51  }
52 
53  if (!$errors && !$attribute->getIsRequired() && empty($value)) {
54  return true;
55  }
56 
58  if ($result !== true) {
59  $errors = array_merge($errors, $result);
60  }
61 
62  //range validation
63  $validateRules = $attribute->getValidateRules();
64  if (!empty($validateRules['date_range_min']) && strtotime(
65  $value
66  ) < $validateRules['date_range_min'] || !empty($validateRules['date_range_max']) && strtotime(
67  $value
68  ) > $validateRules['date_range_max']
69  ) {
70  if (!empty($validateRules['date_range_min']) && !empty($validateRules['date_range_max'])) {
71  $label = __($attribute->getStoreLabel());
72  $errors[] = __(
73  'Please enter a valid date between %1 and %2 at %3.',
74  date('d/m/Y', $validateRules['date_range_min']),
75  date('d/m/Y', $validateRules['date_range_max']),
76  $label
77  );
78  } elseif (!empty($validateRules['date_range_min'])) {
79  $label = __($attribute->getStoreLabel());
80  $errors[] = __(
81  'Please enter a valid date equal to or greater than %1 at %2.',
82  date('d/m/Y', $validateRules['date_range_min']),
83  $label
84  );
85  } elseif (!empty($validateRules['date_range_max'])) {
86  $label = __($attribute->getStoreLabel());
87  $errors[] = __(
88  'Please enter a valid date less than or equal to %1 at %2.',
89  date('d/m/Y', $validateRules['date_range_max']),
90  $label
91  );
92  }
93  }
94 
95  if (count($errors) == 0) {
96  return true;
97  }
98 
99  return $errors;
100  }
101 
108  public function compactValue($value)
109  {
110  if ($value !== false) {
111  if (empty($value)) {
112  $value = null;
113  }
114  $this->getEntity()->setDataUsingMethod($this->getAttribute()->getAttributeCode(), $value);
115  }
116  return $this;
117  }
118 
126  public function restoreValue($value)
127  {
128  return $this->compactValue($value);
129  }
130 
138  {
139  $value = $this->getEntity()->getData($this->getAttribute()->getAttributeCode());
140  if ($value) {
141  switch ($format) {
142  case \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_TEXT:
143  case \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_HTML:
144  case \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_PDF:
145  $this->_dateFilterFormat(\IntlDateFormatter::MEDIUM);
146  break;
147  }
148  $value = $this->_applyOutputFilter($value);
149  }
150 
151  $this->_dateFilterFormat(\IntlDateFormatter::SHORT);
152 
153  return $value;
154  }
155 }
extractValue(RequestInterface $request)
Definition: Date.php:23
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
_getRequestValue(RequestInterface $request)
__()
Definition: __.php:13
$label
Definition: details.phtml:21
$value
Definition: gender.phtml:16
$format
Definition: list.phtml:12
outputValue($format=\Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_TEXT)
Definition: Date.php:137
$errors
Definition: overview.phtml:9