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>
Elavarasan
источник
Вы должны будете забрать данные адреса через своего наблюдателя и самостоятельно создать запись адреса для выставления счета. Почему бы не использовать готовое расширение? Например: itoris.com/...
Nico
@Elavarasan, ты нашел решение? Если да, пожалуйста, напишите здесь. Это может быть полезно для других.
Божжаия

Ответы:

20

Пример отображения полей адреса с помощью 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

Создайте этот файл в вашей пользовательской теме:

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

Итак, вам нужно установить метод действия setShowAddressFields как true, например, в этом примере:

<?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, затем vendor \ magento \ module-customer \ view \ frontend \ layout customer_account_create.xml, затем перейдите к строке № 13, проверьте этот код и поместите раздел billow в строку № 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

Никогда не редактируйте файлы поставщиков!

Скопируйте это в свою тему и продолжайте, я нахожусь в поиске настройки (бэкэнда), потому что иначе вы бы так ее кодировали?

Если кто-то нашел это, дайте мне знать

поздравил

Вим DesignIT
источник
0

Просто откройте приложение / дизайн / внешний интерфейс / пакет / тему / Magento_Customer / макет и откройте 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>

После этого вы увидите раскрывающийся список состояний на странице регистрации.

Nikul
источник
0

Есть два способа сделать это,

  1. Из файла шаблона

  2. Из xml

Выше объяснено xmlнесколько раз, поэтому я собираюсь сделать файл шаблона способом.

Откройте файл шаблона внутри вашей темы [Не редактировать основные файлы], app / design / frontend / [vendor_name] / [theme_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()): ?>
детеныш
источник