/** * Process js Layout of block * * @param array $jsLayout * @return array * @SuppressWarnings(PHPMD.NPathComplexity) */ public function process($jsLayout) { $elements = ['city' => ['visible' => $this->isCityActive(), 'formElement' => 'input', 'label' => __('City'), 'value' => null], 'country_id' => ['visible' => true, 'formElement' => 'select', 'label' => __('Country'), 'options' => $this->countryCollection->load()->toOptionArray(), 'value' => null], 'region_id' => ['visible' => true, 'formElement' => 'select', 'label' => __('State/Province'), 'options' => $this->regionCollection->load()->toOptionArray(), 'value' => null], 'postcode' => ['visible' => true, 'formElement' => 'input', 'label' => __('Zip/Postal Code'), 'value' => null]]; if (isset($jsLayout['components']['block-summary']['children']['block-shipping']['children']['address-fieldsets']['children'])) { $fieldSetPointer =& $jsLayout['components']['block-summary']['children']['block-shipping']['children']['address-fieldsets']['children']; $fieldSetPointer = $this->merger->merge($elements, 'checkoutProvider', 'shippingAddress', $fieldSetPointer); } return $jsLayout; }
/** * Inject billing address component into every payment component * * @param array $configuration list of payment components * @param array $elements attributes that must be displayed in address form * @return array */ private function processPaymentConfiguration(array &$configuration, array $elements) { $output = []; foreach ($configuration as $paymentGroup => $groupConfig) { foreach ($groupConfig['methods'] as $paymentCode => $paymentComponent) { if (empty($paymentComponent['isBillingAddressRequired'])) { continue; } $output[$paymentCode . '-form'] = ['component' => 'Magento_Checkout/js/view/billing-address', 'displayArea' => 'billing-address-form-' . $paymentCode, 'provider' => 'checkoutProvider', 'deps' => 'checkoutProvider', 'dataScopePrefix' => 'billingAddress' . $paymentCode, 'sortOrder' => 1, 'children' => ['form-fields' => ['component' => 'uiComponent', 'displayArea' => 'additional-fieldsets', 'children' => $this->merger->merge($elements, 'checkoutProvider', 'billingAddress' . $paymentCode, ['country_id' => ['sortOrder' => 115], 'region' => ['visible' => false], 'region_id' => ['component' => 'Magento_Ui/js/form/element/region', 'config' => ['template' => 'ui/form/field', 'elementTmpl' => 'ui/form/element/select', 'customEntry' => 'billingAddress' . $paymentCode . '.region'], 'validation' => ['required-entry' => true], 'filterBy' => ['target' => '${ $.provider }:${ $.parentScope }.country_id', 'field' => 'country_id']], 'postcode' => ['component' => 'Magento_Ui/js/form/element/post-code', 'validation' => ['required-entry' => true]], 'company' => ['validation' => ['min_text_length' => 0]], 'fax' => ['validation' => ['min_text_length' => 0]], 'telephone' => ['config' => ['tooltip' => ['description' => __('For delivery questions.')]]]])]]]; } unset($configuration[$paymentGroup]['methods']); } return $output; }