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, ти знайшов рішення? Якщо так, будь ласка, опублікуйте тут. Це може бути корисним для інших.
Боджая

Відповіді:


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.
Карл Стівенс

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

Привіт, спочатку знайдіть кореневу папку magento, потім постачальника \ magento \ module-customer \ view \ frontend \ layout customer_account_create.xml, тоді перейдіть до рядка № 13, перевірте цей код і поставте розділ plow на рядок № 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

Просто відкрийте додаток / дизайн / frontend / Package / Theme / Magento_Customer / layout та відкрийте customer_account_create.xml.

Перейдіть до рядка № 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спосіб кілька разів, тому я збираюся робити шаблон файлу шаблону.

Відкрийте файл шаблону всередині вашої теми [Не редагуйте основні файли], додаток / дизайн / frontend / [vendor_name] / [topic_name] /Magento_Customer/templates/form/register.phtml

знайти рядок, у якому цей код,

getShowAddressFields()

це може бути або в,

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

або

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

залежно від вашої версії magento.

поставити цей код перед цим рядком,

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

Отже, кінцевий результат повинен виглядати так,

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

або

<?php $this->setShowAddressFields(true); ?>
<?php if ($block->getShowAddressFields()): ?>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.