Magento 2: วิธีการแสดงฟิลด์ที่อยู่ในแบบฟอร์มลงทะเบียน?


14

ฉันต้องการแสดงฟิลด์ที่อยู่ (เพื่อบันทึกในที่อยู่สำหรับการเรียกเก็บเงินเริ่มต้น) ในแบบฟอร์มลงทะเบียนลูกค้า ฉันรู้ว่าต้องทำอย่างไรใน Magento 1. แต่ฉันหลงทางกับ Magento 2. เคยมีใครทำแบบนี้มาก่อน .. ?

การอัปเดตไฟล์ xml ใด ๆ เช่นใน 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>

คุณจะต้องรับข้อมูลที่อยู่ผ่านผู้สังเกตการณ์ของคุณและสร้างที่อยู่การเรียกเก็บเงินบันทึกด้วยตัวเอง ทำไมไม่ใช้ส่วนขยายที่พร้อม ตัวอย่างเช่น: itoris.com/…
nico

@Elavarasan คุณหาวิธีแก้ปัญหา? ถ้าใช่กรุณาโพสต์ที่นี่ มันมีประโยชน์สำหรับผู้อื่น
Bojjaiah

คำตอบ:


21

ตัวอย่างฟิลด์แสดงที่อยู่โดยใช้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>

คุณรู้วิธีที่จะประสบความสำเร็จใน Magento รุ่นล่าสุด (v2.3.4) หรือไม่? ฉันเคยใช้วิธีการที่คล้ายกับข้อเสนอแนะของคุณในอดีตและพวกเขาได้ทำงานมาตลอดจนถึงรุ่น 2.3.3
Karl Stephens

4

สร้างไฟล์นี้ในธีมที่คุณกำหนดเอง:

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

ดังนั้นคุณต้องตั้งค่าวิธีการดำเนินการที่เรียกว่าsetShowAddressFieldsเหมือนจริงเช่นตัวอย่าง:

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

สวัสดีก่อนอื่นค้นหาโฟลเดอร์ root magento จากนั้นผู้ขาย \ magento \ module-customer \ view \ frontend \ layout customer_account_create.xml จากนั้นไปที่บรรทัดที่ 13 ตรวจสอบรหัสนี้และใส่ส่วนที่เป็นลูกคลื่นที่บรรทัดที่ 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>

ใช้เฉพาะส่วนนี้

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

1

ไม่ต้องแก้ไขไฟล์ผู้ขาย !!

คัดลอกสิ่งนี้ในชุดรูปแบบของคุณและไปที่นั่นฉันกำลังค้นหาการตั้งค่า (แบ็กเอนด์) เพราะเหตุใดคุณจะรหัสอย่างนั้น

หากมีคนพบสิ่งนี้แจ้งให้เราทราบ

ทักทาย


0

เพียงแค่เปิดแอป / ออกแบบ / ส่วนหน้า / แพ็คเกจ / ธีม / Magento_Customer / เลย์เอาต์แล้วเปิด customer_account_create.xml

ไปที่ Line NUM 16 หรือค้นหาโค้ดด้านล่าง

<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</argumen>
          </action>

หลังจากนี้คุณจะเห็นสถานะแบบเลื่อนลงในหน้าลงทะเบียน


0

มีสองวิธีในการบรรลุเป้าหมายนี้

  1. จากไฟล์เทมเพลต

  2. ตั้งแต่ xml

xmlวิธีการอธิบายข้างต้นหลายครั้งดังนั้นฉันจะทำไฟล์เทมเพลต

เปิดไฟล์เทมเพลตภายในธีมของคุณ [อย่าแก้ไขไฟล์หลัก], แอพ / ออกแบบ / ส่วนหน้า / [ผู้จำหน่าย _ ชื่อ] / [theme_name] /Magento_Customer/templates/form/register.phtml

ค้นหาบรรทัดที่มีรหัสนี้

getShowAddressFields()

มันอาจเป็นได้ทั้ง

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

หรือ

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

ขึ้นอยู่กับเวอร์ชั่นวีโอไอพีของคุณ

ใส่รหัสนี้ก่อนบรรทัดนั้น

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

ดังนั้นผลลัพธ์สุดท้ายควรมีลักษณะเช่นนี้

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

หรือ

<?php $this->setShowAddressFields(true); ?>
<?php if ($block->getShowAddressFields()): ?>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.