21 'checkbox' =>
'Magento_Ui/js/form/element/select',
22 'select' =>
'Magento_Ui/js/form/element/select',
23 'textarea' =>
'Magento_Ui/js/form/element/textarea',
24 'multiline' =>
'Magento_Ui/js/form/components/group',
25 'multiselect' =>
'Magento_Ui/js/form/element/multiselect',
26 'image' =>
'Magento_Ui/js/form/element/media',
27 'file' =>
'Magento_Ui/js/form/element/media',
46 'alpha' =>
'validate-alpha',
47 'numeric' =>
'validate-number',
48 'alphanumeric' =>
'validate-alphanum',
49 'url' =>
'validate-url',
51 'length' =>
'validate-length',
57 private $addressHelper;
62 private $customerSession;
67 private $customerRepository;
77 private $directoryHelper;
84 private $topCountryCodes;
93 AddressHelper $addressHelper,
95 CustomerRepository $customerRepository,
96 DirectoryHelper $directoryHelper
98 $this->addressHelper = $addressHelper;
99 $this->customerSession = $customerSession;
101 $this->directoryHelper = $directoryHelper;
102 $this->topCountryCodes = $directoryHelper->getTopCountryCodes();
114 public function merge($elements, $providerName, $dataScopePrefix, array
$fields = [])
118 if (!$this->
isFieldVisible($attributeCode, $attributeConfig, $additionalConfig)) {
146 array $attributeConfig,
147 array $additionalConfig,
152 if (isset($attributeConfig[
'validation'][
'input_validation'])) {
153 $validationRule = $attributeConfig[
'validation'][
'input_validation'];
154 $attributeConfig[
'validation'][$this->inputValidationMap[$validationRule]] =
true;
155 unset($attributeConfig[
'validation'][
'input_validation']);
158 if ($attributeConfig[
'formElement'] ==
'multiline') {
162 $uiComponent = isset($this->formElementMap[$attributeConfig[
'formElement']])
163 ? $this->formElementMap[$attributeConfig[
'formElement']]
164 :
'Magento_Ui/js/form/element/abstract';
165 $elementTemplate = isset($this->templateMap[$attributeConfig[
'formElement']])
166 ?
'ui/form/element/' . $this->templateMap[$attributeConfig[
'formElement']]
167 :
'ui/form/element/' . $attributeConfig[
'formElement'];
170 'component' => isset($additionalConfig[
'component']) ? $additionalConfig[
'component'] : $uiComponent,
178 'customScope' => $dataScopePrefix,
179 'template' =>
'ui/form/field',
180 'elementTmpl' => $elementTemplate,
185 'label' => $attributeConfig[
'label'],
186 'provider' => $providerName,
187 'sortOrder' => isset($additionalConfig[
'sortOrder'])
188 ? $additionalConfig[
'sortOrder']
189 : $attributeConfig[
'sortOrder'],
192 'filterBy' => isset($additionalConfig[
'filterBy']) ? $additionalConfig[
'filterBy'] :
null,
193 'customEntry' => isset($additionalConfig[
'customEntry']) ? $additionalConfig[
'customEntry'] :
null,
194 'visible' => isset($additionalConfig[
'visible']) ? $additionalConfig[
'visible'] :
true,
201 'initialOptions' =>
'index = ' . $providerName .
':dictionaries.' .
$attributeCode,
202 'setOptions' =>
'index = ' . $providerName .
':dictionaries.' .
$attributeCode 206 if (isset($attributeConfig[
'value']) && $attributeConfig[
'value'] !=
null) {
207 $element[
'value'] = $attributeConfig[
'value'];
208 }
elseif (isset($attributeConfig[
'default']) && $attributeConfig[
'default'] !=
null) {
209 $element[
'value'] = $attributeConfig[
'default'];
212 if (
null !== $defaultValue) {
229 $mainData = isset($mainSource[$nodeName]) ? $mainSource[$nodeName] : [];
230 $additionalData = isset($additionalSource[$nodeName]) ? $additionalSource[$nodeName] : [];
231 return array_replace_recursive($additionalData, $mainData);
245 if ($attributeConfig[
'visible'] ==
false 246 || (isset($additionalConfig[
'visible']) && $additionalConfig[
'visible'] ==
false)
250 if (
$attributeCode ==
'vat_id' && !$this->addressHelper->isVatAttributeVisible()) {
268 unset($attributeConfig[
'validation'][
'required-entry']);
269 for ($lineIndex = 0; $lineIndex < (int)$attributeConfig[
'size']; $lineIndex++) {
270 $isFirstLine = $lineIndex === 0;
272 'component' =>
'Magento_Ui/js/form/element/abstract',
275 'customScope' => $dataScopePrefix,
276 'template' =>
'ui/form/field',
277 'elementTmpl' =>
'ui/form/element/input' 279 'dataScope' => $lineIndex,
280 'provider' => $providerName,
281 'validation' => $isFirstLine
283 [
'required-entry' => (
bool)$attributeConfig[
'required']],
284 $attributeConfig[
'validation']
286 : $attributeConfig[
'validation'],
287 'additionalClasses' => $isFirstLine ?
'field' :
'additional' 290 if ($isFirstLine && isset($attributeConfig[
'default']) && $attributeConfig[
'default'] !=
null) {
291 $line[
'value'] = $attributeConfig[
'default'];
296 'component' =>
'Magento_Ui/js/form/components/group',
297 'label' => $attributeConfig[
'label'],
298 'required' => (bool)$attributeConfig[
'required'],
300 'provider' => $providerName,
301 'sortOrder' => $attributeConfig[
'sortOrder'],
304 'template' =>
'ui/group/group',
307 'children' => $lines,
318 return $this->directoryHelper->getDefaultCountry();
322 if ($customer ===
null) {
326 $attributeValue =
null;
329 $attributeValue = $customer->getPrefix();
332 $attributeValue = $customer->getFirstname();
335 $attributeValue = $customer->getMiddlename();
338 $attributeValue = $customer->getLastname();
341 $attributeValue = $customer->getSuffix();
345 return $attributeValue;
353 if (!$this->customer) {
354 if ($this->customerSession->isLoggedIn()) {
355 $this->customer = $this->customerRepository->getById($this->customerSession->getCustomerId());
360 return $this->customer;
373 return isset($attributeConfig[
'options']) ? $attributeConfig[
'options'] : [];
385 if (empty($this->topCountryCodes)) {
386 return $countryOptions;
391 'value' =>
'delimiter',
392 'label' =>
'──────────',
395 foreach ($countryOptions as $countryOption) {
396 if (empty($countryOption[
'value']) || in_array($countryOption[
'value'], $this->topCountryCodes)) {
397 $headOptions[] = $countryOption;
399 $tailOptions[] = $countryOption;
402 return array_merge($headOptions, $tailOptions);
elseif(isset( $params[ 'redirect_parent']))
orderCountryOptions(array $countryOptions)
__construct(AddressHelper $addressHelper, Session $customerSession, CustomerRepository $customerRepository, DirectoryHelper $directoryHelper)
getDefaultValue($attributeCode)
merge($elements, $providerName, $dataScopePrefix, array $fields=[])
getFieldOptions($attributeCode, array $attributeConfig)
mergeConfigurationNode($nodeName, array $mainSource, array $additionalSource)
getFieldConfig( $attributeCode, array $attributeConfig, array $additionalConfig, $providerName, $dataScopePrefix)
getMultilineFieldConfig($attributeCode, array $attributeConfig, $providerName, $dataScopePrefix)
isFieldVisible($attributeCode, array $attributeConfig, array $additionalConfig=[])