no checkout de uma página, preciso reordenar o endereço de cobrança antes do endereço de entrega. de fato, a lógica deve ser inversa do que é agora. se o endereço de entrega diferir do endereço de cobrança, você poderá editá-lo. agora você pode editar o endereço de cobrança se ele diferir do endereço de entrega. também o endereço de cobrança deve aparecer na mesma "página" que o endereço de entrega. atualmente passo 1 nas etapas de checkout do magento.
Como eu faria isso? talvez exista um plugin para isso, mas ainda não consegui encontrar um.
Anexei uma captura de tela de uma loja alemã fazendo assim:
Encontrei o arquivo de modelo .html para o formulário de cobrança e parece que este é o local em que ele termina no 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>
Mas não foi especificamente colocado aqui e não consigo encontrar outro lugar onde é injetado nesse local.
Magento/Checkout/Block/Checkout/LayoutProcessor.php
.Magento\Checkout\Block\Checkout\LayoutProcessor
e mudar de posição como estou pensando. Não tenho certezaRespostas:
Como Aaron apontou, o formulário é adicionado
Magento/Checkout/Block/Checkout/LayoutProcessor.php
. Com essas informações, desenvolvi um módulo com um plug-in posterior que se conecta ao processador: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
Isso reordena com êxito o formulário de endereço de cobrança (e, com sorte, salva algumas dores de cabeça para outras pessoas). Mas ainda há trabalho necessário no javascript (?) Que lida com o
billing address is the same as shipping address
mecanismo. Como isso ainda funciona da maneira "padrão".Informação adicional:
Vi que no back-end, se você criar um novo pedido, o layout será exatamente o desejado. O formulário de cobrança é "antes" do formulário de remessa e a lógica também é inversa. Se eu conseguir encontrar o tempo, acho que pode ser benéfico olhar para o código lá. Talvez seja possível usá-lo também no frontend.
fonte
<vendor>\ReorderBillingForm\Block\Checkout;
?aroundProcess
. Eu atualizei minha postagem.Notice: Undefined index: billing-address-form
in LayoutProcessorPlugin.php:20
O erro
Undefined index: billing-address-form
noLayoutProcessorPlugin.php
ocorre quando você tem o check-out propriedade "Display Endereço de Cobrança On " definido como " Método de Pagamento " em vez de " Pagamento Página ".Corrigir com:
Eu teria preferido adicionar isso como um comentário ao post do DarsVaedas (veja acima), mas não tenho permissão…
fonte