Magento 2: Comment afficher le champ d'adresse dans le formulaire d'inscription?


14

Je souhaite afficher les champs d'adresse (pour enregistrer dans l'adresse de facturation par défaut) dans le formulaire d'inscription du client. Je sais comment faire dans Magento 1. Mais je suis frappé par Magento 2. Est-ce que quelqu'un a déjà fait ça avant ..?

Toute mise à jour de fichier xml comme dans magento 1,

<customer_account_create>
    <reference name="customer_form_register">
        <action method="setData"><key>show_address_fields</key><value>1</value></action>
    </reference>
</customer_account_create>

Vous devrez récupérer les données d'adresse via votre observateur et créer vous-même l'enregistrement de l'adresse de facturation. Pourquoi ne pas utiliser une extension prête? Par exemple: itoris.com/…
nico

@Elavarasan, avez-vous trouvé une solution? Si oui, veuillez poster ici. Cela peut être utile pour les autres.
Bojjaiah

Réponses:


20

Exemples de champs d'adresse d'affichage utilisant customer_account_create.xml :

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="customer_form_register">
            <arguments>
                <argument name="show_address_fields" xsi:type="boolean">true</argument>
            </arguments>
        </referenceBlock>
    </body>
</page>

4

Créez ce fichier dans votre thème personnalisé:

app/design/frontend/YOUR_PACKAGE/YOUR_THEME/Magento_Customer/layout/customer_account_create.xml

Donc, vous devez définir la méthode d'action appelée setShowAddressFields comme true, comme cet exemple:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="customer_form_register">
            <action method="setShowAddressFields">
                <argument name="show.address.fields" xsi:type="boolean">true</argument>
            </action>
        </referenceBlock>
    </body>
</page>

1

Bonjour, trouvez d'abord le dossier racine de magento, puis le fournisseur \ magento \ module-customer \ view \ frontend \ layout customer_account_create.xml puis passez à la ligne n ° 13 vérifiez ce code et placez la section billow sur la ligne n ° 17

<referenceContainer name="content">
            <block class="Magento\Customer\Block\Form\Register" name="customer_form_register" template="form/register.phtml">
                <container name="form.additional.info" as="form_additional_info"/>
                <container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>
                <action method="setShowAddressFields">
                    <argument name="show.address.fields" xsi:type="boolean">true</argument>
                </action>
            </block>
            <block class="Magento\Cookie\Block\RequireCookie" name="require-cookie" template="Magento_Cookie::require_cookie.phtml">
                <arguments>
                    <argument name="triggers" xsi:type="array">
                        <item name="registerSubmitButton" xsi:type="string">.action.submit</item>
                    </argument>
                </arguments>
            </block>
        </referenceContainer>

utilisez uniquement cette section

<action method="setShowAddressFields">
                        <argument name="show.address.fields" xsi:type="boolean">true</argument>
                    </action>

1

Ne modifiez jamais les fichiers des fournisseurs !!

Copiez ceci dans votre thème et continuez là-bas, je suis à la recherche du paramètre (backend) parce que sinon le coderiez-vous comme ça?

Si quelqu'un a trouvé cela, faites le moi savoir

Salue


0

Ouvrez simplement votre application / design / frontend / Package / Theme / Magento_Customer / layout et ouvrez customer_account_create.xml.

Allez à la ligne num 16 ou trouvez le code ci-dessous.

<container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>

Après le code ci-dessous, mettez simplement le code ci-dessous.

<action method="setShowAddressFields">
                    <argument name="show.address.fields" xsi:type="boolean">true</argumen>
          </action>

Après cela, vous verrez une liste déroulante d'état dans la page d'enregistrement.


0

Il y a deux façons d'accomplir cela,

  1. À partir du fichier modèle

  2. De xml

Ci-dessus expliqué xmlplusieurs fois, donc je vais faire un fichier de modèle.

Ouvrez le fichier de modèle à l'intérieur de votre thème [Ne modifiez pas les fichiers de base], app / design / frontend / [nom du vendeur] / [nom du thème] /Magento_Customer/templates/form/register.phtml

trouver la ligne qui a ce code,

getShowAddressFields()

ça pourrait être soit dans,

<?php if($this->getShowAddressFields()): ?>

ou

<?php if ($block->getShowAddressFields()): ?>

en fonction de votre version de magento.

mettez ce code avant cette ligne,

<?php $this->setShowAddressFields(true); ?>

Ainsi, la sortie finale devrait ressembler à ceci,

<?php $this->setShowAddressFields(true); ?>
<?php if($this->getShowAddressFields()): ?>

ou

<?php $this->setShowAddressFields(true); ?>
<?php if ($block->getShowAddressFields()): ?>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.