na kasie na stronie muszę zmienić kolejność adresu rozliczeniowego przed adresem wysyłki. w rzeczywistości logika powinna być odwrotna niż obecnie. jeśli adres wysyłki różni się od adresu rozliczeniowego, możesz go edytować. teraz możesz edytować adres rozliczeniowy, jeśli różni się on od adresu wysyłki. również adres rozliczeniowy powinien pojawić się na tej samej „stronie” co adres wysyłki. obecnie krok 1 w krokach kasy Magento.
jak mam to zrobić? może jest do tego wtyczka, ale jeszcze jej nie znalazłem.
Dołączyłem zrzut ekranu z niemieckiego sklepu, który robi to w ten sposób:
Znalazłem plik szablonu .html dla formularza rozliczeniowego i wydaje się, że jest to miejsce, w którym kończy się on w checkout_index_index.xml:
<item name="billing-step" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="sortOrder" xsi:type="string">2</item>
<item name="children" xsi:type="array">
<item name="payment" xsi:type="array">
<item name="component" xsi:type="string">Magento_Checkout/js/view/payment</item>
<item name="config" xsi:type="array">
<item name="title" xsi:type="string" translate="true">Payment</item>
</item>
<item name="children" xsi:type="array">
<!-- ... -->
<!-- merge your payment methods here -->
<item name="afterMethods" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="displayArea" xsi:type="string">afterMethods</item>
<item name="children" xsi:type="array">
<!-- merge additional data after payment methods here -->
<!-- I think here the billing form ends up -->
</item>
</item>
</item>
</item>
</item>
</item>
Ale to nie jest specjalnie umieszczone tutaj i nie mogę znaleźć innego miejsca, w które zostanie wstrzyknięte w to miejsce.
Magento/Checkout/Block/Checkout/LayoutProcessor.php
.Magento\Checkout\Block\Checkout\LayoutProcessor
i zmienić pozycję, tak jak myślę. Nie jestem pewienOdpowiedzi:
Jak zauważył Aaron, formularz jest dodawany
Magento/Checkout/Block/Checkout/LayoutProcessor.php
. Dzięki tym informacjom opracowałem moduł z wtyczką końcową, która łączy się z tym procesorem:app/code/<vendor>/<module>/Model/Checkout/LayoutProcessorPlugin.php
app/code/<vendor>/<module>/etc/module.xml
app/code/<vendor>/<module>/etc/di.xml
app/code/<vendor>/<module>/registration.php
To z powodzeniem zmienia kolejność formularza adresu rozliczeniowego (i mam nadzieję, że zaoszczędzi trochę bólu innym osobom). Nadal jednak potrzebne są prace nad javascript (?), Który obsługuje ten
billing address is the same as shipping address
mechanizm. Ponieważ nadal działa to w sposób „standardowy”.Dodatkowe informacje:
Widziałem, że w backend, jeśli tworzysz nowe zamówienie, układ jest dokładnie taki, jak chcesz. Formularz rozliczeniowy znajduje się „przed” formularzem wysyłkowym, a logika jest odwrotna. Jeśli znajdę czas, myślę, że warto spojrzeć na kod tam. Być może można go również użyć w interfejsie użytkownika.
źródło
<vendor>\ReorderBillingForm\Block\Checkout;
?aroundProcess
. Zaktualizowałem swój post.Notice: Undefined index: billing-address-form
in LayoutProcessorPlugin.php:20
Błąd
Undefined index: billing-address-form
wLayoutProcessorPlugin.php
pojawia się, gdy masz kasy właściwość „Adres Wyświetlacz rozliczeniowy ” ustawiony na „ Payment Method ” zamiast „ płatność Page ”.Napraw za pomocą:
Wolałbym dodać to jako komentarz do postu DarsVaedas (patrz wyżej), ale wydaje mi się, że nie mam pozwolenia…
źródło