Magento 2: come mostrare il campo dell'indirizzo nel modulo di registrazione?


14

Voglio visualizzare i campi indirizzo (per salvare nell'indirizzo di fatturazione predefinito) nel modulo di registrazione del cliente. So come fare in Magento 1. Ma sono colpito da Magento 2. Qualcuno lo ha già fatto prima ...?

Qualsiasi aggiornamento di file xml come in 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>

Dovrai raccogliere i dati dell'indirizzo tramite il tuo osservatore e creare tu stesso il record dell'indirizzo di fatturazione. Perché non usare un'estensione pronta? Ad esempio: itoris.com/…
nico

@Elavarasan, hai trovato una soluzione? Se sì, si prega di pubblicare qui. Può essere utile per gli altri.
Bojjaiah,

Risposte:


20

Esempio di visualizzazione dei campi indirizzo utilizzando 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

Crea questo file nel tuo tema personalizzato:

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

Quindi, è necessario impostare il metodo di azione chiamato setShowAddressFields come true, come quello di esempio:

<?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

Ciao, prima trova la cartella principale di magento e poi il fornitore \ magento \ module-customer \ view \ frontend \ layout customer_account_create.xml quindi vai alla riga n. 13 controlla questo codice e metti la sezione billow sulla riga 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>

usa solo questa sezione

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

1

Non modificare mai i file del fornitore !!

Copia questo nel tuo tema e continua per lì, sono alla ricerca dell'impostazione (backend) perché perché altrimenti dovresti codificarlo in quel modo?

Se qualcuno ha trovato questo fammi sapere

Greets


0

Basta aprire la tua app / design / frontend / pacchetto / tema / Magento_Customer / layout e aprire customer_account_create.xml.

Vai alla riga numero 16 o trova sotto il codice.

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

Dopo il codice sottostante basta inserire il codice qui sotto.

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

Successivamente, vedrai il menu a discesa dello stato nella pagina del registro.


0

Ci sono due modi per farlo,

  1. Dal file modello

  2. Da XML

Sopra spiegato xmlpiù volte, quindi ho intenzione di fare il modo di file modello.

Apri il file modello all'interno del tuo tema [Non modificare i file di base], app / design / frontend / [nome_vendente] / [nome_argomento] /Magento_Customer/templates/form/register.phtml

trova la riga che ha questo codice,

getShowAddressFields()

potrebbe essere o in,

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

o

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

a seconda della versione di magento.

metti questo codice prima di quella riga,

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

Quindi, l'output finale dovrebbe apparire così,

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

o

<?php $this->setShowAddressFields(true); ?>
<?php if ($block->getShowAddressFields()): ?>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.