Magento 2 | Create customer account. Добавить информацию об адресе

Magento 2 | Create customer account. Добавить информацию об адресе

В Magento 2 есть возможность добавить информацию об адресе клиента на этапе регистрации, но настройки в админ панели нет. В сети есть масса примеров как включить эту область из настроек слоя (layout xml)

 

Пример для customer_account_create.xml см. секцию customer_form_register

<?xml version="1.0"?>
<!--
/**
 * @author Amasty Team
 * @copyright Copyright (c) 2018 Amasty (https://www.amasty.com)
 * @package Amasty_CustomerAttributes
 */
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <block class="Amasty\CustomerAttributes\Block\Customer\Form\Attributes" name="attribute_customer_register" template="attributes.phtml" cacheable="false"/>
        </referenceContainer>
        <referenceBlock name="customer_form_register" ifconfig="customer/create_account/show_address_fields">
            <arguments>
                <argument name="show_address_fields" xsi:type="boolean">true</argument>
            </arguments>
        </referenceBlock>
    </body>
</page>

 

Что делать если нужно включить этот набор полей для определенной витрины? Например регистрация оптового покупателя

 

Тогда нам нужно добавить настройку, как на картинке выше и для определенной витрины включить эти поля.

 

Файл /etc/adminhtml/system.xml в котором нам нужно добавить настройку

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <section id="customer">
            <group id="create_account">
                <field id="show_address_fields" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="0">
                    <label>Show address fields</label>
                    <comment>Address Information on create account page</comment>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
            </group>
        </section>
    </system>
</config>

 

В шаблоне Magento_Customer/templates/form/register.phtml эту настройку нужно использовать

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

// @codingStandardsIgnoreFile

/** @var \Magento\Customer\Block\Form\Register $block */

if (is_null($block->getShowAddressFields())){
    $block->setShowAddressFields($block->getConfig('customer/create_account/show_address_fields'));
}

?>

 

eCommerce/Magento Developer, PHP architect, based in Ukraine