Guest User

Untitled

a guest
Jan 22nd, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.78 KB | None | 0 0
  1. <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
  2. <type name="MagentoCheckoutBlockCheckoutLayoutProcessor">
  3. <plugin disabled="false" name="talliance_layout_checkout" sortOrder="11" type="TallianceSwyftShippingMethodPluginMagentoLayoutModelCheckoutLayoutProcessorPlugin"/>
  4. </type>
  5. </config>
  6.  
  7. public function afterProcess(LayoutProcessor $layoutProcessor, array $jsLayout)
  8. {
  9. $jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']
  10. ['shippingAddress']['children']['shipping-address-fieldset']['children']['city'] = [
  11. 'component' => 'Magento_Ui/js/form/element/select',
  12. 'config' => [
  13. 'customScope' => 'shippingAddress',
  14. 'template' => 'ui/form/field',
  15. 'elementTmpl' => 'ui/form/element/select',
  16. 'id' => 'city'
  17. ],
  18. 'dataScope' => 'shippingAddress.city',
  19. 'label' => 'City',
  20. 'provider' => 'checkoutProvider',
  21. 'visible' => true,
  22. 'validation' => [ 'required-entry' => true ],
  23. 'sortOrder' => 300,
  24. 'id' => 'city',
  25. 'options' => $this->_cities->toOptionArray(),
  26. ];
  27. return $jsLayout;
  28. }
  29.  
  30. <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
  31. <body>
  32. <referenceBlock name="checkout.root">
  33. <arguments>
  34. <argument name="jsLayout" xsi:type="array">
  35. <item name="components" xsi:type="array">
  36. <item name="checkout" xsi:type="array">
  37. <item name="children" xsi:type="array">
  38. <item name="steps" xsi:type="array">
  39. <item name="children" xsi:type="array">
  40. <item name="shipping-step" xsi:type="array">
  41. <item name="children" xsi:type="array">
  42. <item name="step-config" xsi:type="array">
  43. <item name="children" xsi:type="array">
  44. <item name="shipping-rates-validation" xsi:type="array">
  45. <item name="children" xsi:type="array">
  46. <item name="swyft-rates-validation" xsi:type="array">
  47. <item name="component" xsi:type="string">Talliance_SwyftShippingMethod/js/view/shipping-rates-validation/swyft</item>
  48. </item>
  49. </item>
  50. </item>
  51. </item>
  52. </item>
  53. </item>
  54. </item>
  55. </item>
  56. </item>
  57. </item>
  58. </item>
  59. </item>
  60. </argument>
  61. </arguments>
  62. </referenceBlock>
  63. </body>
  64. </page>
  65.  
  66. define(
  67. [],
  68. function () {
  69. 'use strict';
  70. return {
  71. getRules: function() {
  72. return {
  73. 'city': {
  74. 'required': true
  75. }
  76. };
  77. }
  78. };
  79. }
  80. );
  81.  
  82. define(
  83. [
  84. 'jquery',
  85. 'mageUtils',
  86. '../shipping-rates-validation-rules/swyft',
  87. 'mage/translate'
  88. ],
  89. function ($, utils, validationRules, $t) {
  90. 'use strict';
  91. return {
  92. validationErrors: [],
  93. validate: function(address) {
  94. var self = this;
  95.  
  96. this.validationErrors = [];
  97. $.each(validationRules.getRules(), function (field, rule) {
  98. var message;
  99.  
  100. if (rule.required && utils.isEmpty(address[field])) {
  101. message = $t('Field ') + field + $t(' is required.');
  102. self.validationErrors.push(message);
  103. }
  104. });
  105. return !this.validationErrors.length;
  106. }
  107. };
  108. }
  109. );
  110.  
  111. define(
  112. [
  113. 'uiComponent',
  114. 'Magento_Checkout/js/model/shipping-rates-validator',
  115. 'Magento_Checkout/js/model/shipping-rates-validation-rules',
  116. '../../model/shipping-rates-validator/swyft',
  117. '../../model/shipping-rates-validation-rules/swyft'
  118. ],
  119. function (
  120. Component,
  121. defaultShippingRatesValidator,
  122. defaultShippingRatesValidationRules,
  123. swyftShippingRatesValidator,
  124. swyftShippingRatesValidationRules
  125. ) {
  126. 'use strict';
  127. defaultShippingRatesValidator.registerValidator('swyft', swyftShippingRatesValidator);
  128. defaultShippingRatesValidationRules.registerRules('swyft', swyftShippingRatesValidationRules);
  129. return Component;
  130. });
  131.  
  132. public function collectRates(RateRequest $request)
  133. {
  134. if (!$this->getConfigFlag('active')) {
  135. return false;
  136. }
  137.  
  138. // $data = json_decode(file_get_contents('php://input'), true);
  139. // $city = $data['address']['shippingAddress']['city'];
  140. // $this->_logger->log(100, print_r($city,true));
  141.  
  142. $rate = $this->getShippingRates();
  143. $this->_logger->log(100, print_r('rate cost: '.$rate,true));
  144.  
  145.  
  146. if (!$rate) {
  147. return false;
  148. }
  149. $result = $this->_rateFactory->create();
  150. $method = $this->_rateMethodFactory->create();
  151. $method->setCarrier($this->_code);
  152. $method->setCarrierTitle($this->getConfigData('title'));
  153. $method->setMethod($this->_code);
  154. $method->setMethodTitle($this->getConfigData('name'));
  155. $method->setCost($rate);
  156. $method->setPrice($rate);
  157. $result->append($method);
  158. return $result;
  159. }
Add Comment
Please, Sign In to add comment