Magento 2: Bagaimana cara menampilkan bidang alamat dalam formulir pendaftaran?

14

Saya ingin menampilkan bidang alamat (untuk menyimpan dalam alamat penagihan standar) dalam formulir pendaftaran pelanggan. Saya tahu bagaimana melakukannya di Magento 1. Tapi saya terkesan dengan Magento 2. Adakah yang pernah melakukan ini sebelumnya ..?

Pembaruan file xml seperti di 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
sumber
Anda harus mengambil data alamat melalui pengamat dan membuat sendiri catatan alamat penagihan. Mengapa tidak menggunakan ekstensi yang siap? Misalnya: itoris.com/…
nico
@Elavarasan, sudahkah Anda menemukan solusi? Jika Ya silakan kirim di sini. Ini bisa bermanfaat bagi orang lain.
Bojjaiah

Jawaban:

20

Contoh menampilkan bidang alamat menggunakan 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>
akal
sumber
4

Buat file ini dalam tema khusus Anda:

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

Jadi, Anda perlu mengatur metode tindakan yang disebut setShowAddressFields seperti true, seperti contoh itu:

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

Hai pertama-tama temukan folder root magento kemudian vendor \ magento \ module-customer \ view \ frontend \ layout customer_account_create.xml kemudian buka baris no 13 periksa kode ini dan letakkan bagian pemecah pada baris 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>

gunakan hanya bagian ini

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

Jangan pernah mengedit file vendor !!

Salin ini di tema Anda dan pergi ke sana, saya sedang mencari pengaturan (backend) karena mengapa lagi Anda kode seperti itu?

Jika seseorang menemukan ini, beri tahu saya

Salam

Wim DesignIT
sumber
0

Cukup buka aplikasi / desain / antarmuka / Paket / Tema / Magento_Customer / tata letak dan buka customer_account_create.xml.

Buka Baris num 16 atau temukan kode di bawah ini.

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

Setelah kode di bawah ini cukup taruh kode di bawah ini.

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

Setelah ini, Anda akan melihat status dropdown di halaman register.

Nikul
sumber
0

Ada dua cara untuk mencapai ini,

  1. Dari file template

  2. Dari xml

Di atas dijelaskan xmlbeberapa kali, jadi saya akan melakukan cara file templat.

Buka file templat di dalam tema Anda [Jangan mengedit file inti], aplikasi / desain / tampilan depan / [vendor_name] / [theme_name] /Magento_Customer/templates/form/register.phtml

cari baris yang memiliki kode ini,

getShowAddressFields()

itu bisa di,

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

atau

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

tergantung pada versi magento Anda.

letakkan kode ini sebelum baris itu,

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

Jadi, hasil akhir akan terlihat seperti ini,

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

atau

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