на одной странице оформления заказа мне нужно изменить адрес выставления счета до адреса доставки. на самом деле логика должна быть наоборот, чем сейчас. если адрес доставки отличается от адреса выставления счета, вы сможете изменить его. Теперь вы можете изменить адрес для выставления счета, если он отличается от адреса доставки. также платежный адрес должен отображаться на той же «странице», что и адрес доставки. в настоящее время шаг 1 в шагах проверки magento.
как бы я это сделал? может быть, есть плагин для этого, но я пока не смог его найти.
Я приложил скриншот немецкого магазина, делающего это так:
Я нашел файл шаблона .html для формы оплаты, и, похоже, это то место, где он заканчивается в 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>
Но это не определенно размещено здесь, и я не могу найти другое место, где это вводится в это место.
Magento/Checkout/Block/Checkout/LayoutProcessor.php
.Magento\Checkout\Block\Checkout\LayoutProcessor
и изменить положение, как я думаю. Не уверенОтветы:
Как указал Аарон, форма добавлена в
Magento/Checkout/Block/Checkout/LayoutProcessor.php
. С этой информацией я разработал модуль с плагином after, который подключается к этому процессору: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
Это успешно изменяет порядок адреса для выставления счетов (и, мы надеемся, избавляет от головной боли для других людей). Но есть еще работа, необходимая для JavaScript (?), Который обрабатывает
billing address is the same as shipping address
механизм. Поскольку это все еще работает "стандартным" способом.Дополнительная информация:
Я видел, что в бэкэнде, если вы создаете новый заказ, макет будет именно таким, как хотелось. Форма для выставления счета находится «перед» формой отгрузки, а логика - и наоборот. Если я смогу найти время, я думаю, что было бы полезно взглянуть на код там. Может быть, это можно использовать и в веб-интерфейсе.
источник
<vendor>\ReorderBillingForm\Block\Checkout;
?aroundProcess
. Я обновил свой пост.Notice: Undefined index: billing-address-form
in LayoutProcessorPlugin.php:20
Ошибка
Undefined index: billing-address-form
вLayoutProcessorPlugin.php
происходит , когда у вас есть фотографии недвижимости «Display Billing Address On » на « Способ оплаты » вместо « Оплата страницы ».Исправить с помощью:
Я бы предпочел добавить это как комментарий к сообщению DarsVaedas (см. Выше), но у меня, похоже, нет разрешения…
источник