Magento 2: Como mostrar o campo de endereço no formulário de inscrição?

14

Quero exibir os campos de endereço (para salvar no endereço de cobrança padrão) no formulário de registro do cliente. Eu sei como fazer no Magento 1. Mas estou impressionado com o Magento 2. Alguém já fez isso antes ..?

Qualquer atualização de arquivo xml como no 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>
Elavarasan
fonte
Você precisará coletar os dados do endereço através do seu observador e criar o registro do endereço de cobrança. Por que não usar uma extensão pronta? Por exemplo: itoris.com/…
nico
@Elavarasan, você encontrou solução? Se sim, por favor poste aqui. Pode ser útil para outros.
Bojjaiah

Respostas:

20

Exemplo de campos de endereço de exibição usando 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>
sagacidade
fonte
4

Crie este arquivo no seu tema personalizado:

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

Portanto, você precisa definir o método de ação chamado setShowAddressFields como true, como o exemplo:

<?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>
Rafael Corrêa Gomes
fonte
1

Oi, primeiro encontre a pasta raiz do magento e, em seguida, vendor \ magento \ module-customer \ view \ frontend \ layout customer_account_create.xml, em seguida, vá para a linha 13, verifique este código e coloque a seção billow na linha 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>

use apenas esta seção

<action method="setShowAddressFields">
                        <argument name="show.address.fields" xsi:type="boolean">true</argument>
                    </action>
Kanhu Charan Rath
fonte
1

Nunca edite arquivos de fornecedores !!

Copie isso no seu tema e continue por lá, estou procurando a configuração (back-end) porque por que mais você codificaria dessa maneira?

Se alguém encontrou isso, me avise

Cumprimenta

Wim DesignIT
fonte
0

Basta abrir seu aplicativo / design / front-end / Pacote / Tema / Magento_Customer / layout e abrir customer_account_create.xml.

Vá para a linha 16 ou encontre o código abaixo.

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

Após o código abaixo, basta colocar o código abaixo.

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

Depois disso, você verá o menu suspenso de estado na página de registro.

Nikul
fonte
0

Existem duas maneiras de conseguir isso,

  1. Do arquivo de modelo

  2. Do xml

Acima explicado xmlmaneira várias vezes, então eu vou fazer o caminho do arquivo de modelo.

Abrir arquivo de modelo dentro do seu tema [Não editar arquivos principais], app / design / frontend / [vendor_name] / [theme_name] /Magento_Customer/templates/form/register.phtml

encontre a linha que tem esse código,

getShowAddressFields()

poderia estar dentro,

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

ou

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

dependendo da sua versão do magento.

coloque esse código antes dessa linha,

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

Portanto, a saída final deve ficar assim,

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

ou

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