à la caisse onepage, je dois réorganiser l'adresse de facturation avant l'adresse de livraison. en fait, la logique devrait être l'inverse de ce qu'elle est maintenant. si l'adresse de livraison diffère de l'adresse de facturation, vous devriez pouvoir la modifier. vous pouvez maintenant modifier l'adresse de facturation si elle diffère de l'adresse de livraison. l'adresse de facturation doit également apparaître sur la même "page" que l'adresse de livraison. actuellement l'étape 1 des étapes de paiement de magento.
comment pourrais-je faire cela? il y a peut-être un plugin pour cela mais je n'en ai pas encore trouvé.
J'ai joint une capture d'écran d'une boutique allemande le faisant comme ceci:
J'ai trouvé le fichier modèle .html pour le formulaire de facturation et il semble que c'est l'endroit où il se retrouve dans le 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>
Mais ce n'est pas spécifiquement placé ici et je n'arrive pas à trouver un autre endroit où il est injecté à cet endroit.
Magento/Checkout/Block/Checkout/LayoutProcessor.php
.Magento\Checkout\Block\Checkout\LayoutProcessor
et de changer de position comme je le pense. Pas sûrRéponses:
Comme l'a souligné Aaron, le formulaire est ajouté
Magento/Checkout/Block/Checkout/LayoutProcessor.php
. Avec ces informations, j'ai développé un module avec un plugin after qui se connecte à ce processeur: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
Cela réorganise avec succès le formulaire d'adresse de facturation (et, espérons-le, évite quelques maux de tête à d'autres personnes). Mais il reste du travail à faire sur le javascript (?) Qui gère le
billing address is the same as shipping address
mécanisme. Comme cela fonctionne toujours de la manière "standard".Information additionnelle:
J'ai vu que dans le backend, si vous créez une nouvelle commande, la mise en page est exactement comme vous le souhaitez. Le formulaire de facturation est "avant" le formulaire d'expédition et la logique est également l'inverse. Si je peux trouver le temps, je pense qu'il pourrait être utile de regarder le code là-bas. Peut-être qu'il est également possible de l'utiliser en frontend.
la source
<vendor>\ReorderBillingForm\Block\Checkout;
?aroundProcess
. J'ai mis à jour mon message.Notice: Undefined index: billing-address-form
in LayoutProcessorPlugin.php:20
L'erreur
Undefined index: billing-address-form
enLayoutProcessorPlugin.php
se produit lorsque vous avez la propriété de la caisse « Afficher adresse de facturation » sur « Méthode de paiement » au lieu de « page de paiement ».Corrigez avec:
J'aurais préféré ajouter ceci en tant que commentaire au post de DarsVaedas (voir ci-dessus), mais je ne semble pas avoir la permission…
la source