Magento 2: ¿Cómo mostrar el campo de dirección en el formulario de registro?


14

Quiero mostrar los campos de dirección (para guardar en la dirección de facturación predeterminada) en el formulario de registro del cliente. Sé cómo hacerlo en Magento 1. Pero me llamó la atención con Magento 2. ¿Alguien ha hecho esto antes ...?

Cualquier actualización de archivos xml como en 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>

Tendrá que recoger los datos de la dirección a través de su observador y crear el registro de la dirección de facturación usted mismo. ¿Por qué no usar una extensión lista? Por ejemplo: itoris.com/…
nico

@Elavarasan, ¿has encontrado la solución? En caso afirmativo, publique aquí. Puede ser útil para otros.
Bojjaiah

Respuestas:


20

Ejemplo de campos de dirección de visualización utilizando 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

Cree este archivo en su tema personalizado:

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

Por lo tanto, debe establecer el método de acción llamado setShowAddressFields como verdadero, como esa muestra:

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

Hola, primero encuentre la carpeta raíz de magento, luego proveedor \ magento \ module-customer \ view \ frontend \ layout customer_account_create.xml, luego vaya a la línea no 13, verifique este código y coloque la sección billow en la línea no 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 esta sección

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

1

¡Nunca edite archivos de proveedores!

Copie esto en su tema y continúe allí, estoy en busca de la configuración (back-end) porque ¿por qué otra razón lo codificaría así?

Si alguien ha encontrado esto, hágamelo saber

Saluda


0

Simplemente abra su aplicación / diseño / frontend / Paquete / Tema / Magento_Customer / layout y abra customer_account_create.xml.

Vaya a la línea num 16 o busque el código a continuación.

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

Después del código debajo, solo ponga el código debajo.

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

Después de esto, verá el menú desplegable de estado en la página de registro.


0

Hay dos formas de lograr esto,

  1. Desde archivo de plantilla

  2. De xml

Explicado anteriormente xml varias veces, así que voy a hacer la plantilla de archivo.

Abra el archivo de plantilla dentro de su tema [No edite archivos principales], app / design / frontend / [nombre_proveedor] / [nombre_tema] /Magento_Customer/templates/form/register.phtml

encontrar la línea que tiene este código,

getShowAddressFields()

podría estar en

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

o

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

dependiendo de tu versión de magento.

pon este código antes de esa línea,

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

Entonces, el resultado final debería verse así,

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

o

<?php $this->setShowAddressFields(true); ?>
<?php if ($block->getShowAddressFields()): ?>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.