Magento 2: Adres alanı kayıt formunda nasıl gösterilir?


14

Müşteri kayıt formunda adres alanlarını (varsayılan fatura adresinde kaydetmek için) görüntülemek istiyorum. Magento 1'de nasıl yapıldığını biliyorum. Ama Magento 2'ye çarptım. Bunu daha önce yapan var mı ..?

Magento 1'deki gibi herhangi bir xml dosyası güncellemesi,

<customer_account_create>
    <reference name="customer_form_register">
        <action method="setData"><key>show_address_fields</key><value>1</value></action>
    </reference>
</customer_account_create>

Adres verilerini gözlemcinizden almanız ve fatura adresi kaydını kendiniz oluşturmanız gerekir. Neden hazır bir uzantı kullanmıyorsunuz? Örneğin: itoris.com/…
nico

@Elavarasan, çözüm buldunuz mu? Evet ise, lütfen buraya gönderin. Diğerleri için yararlı olabilir.
Bojjaiah

Yanıtlar:


21

Customer_account_create.xml kullanan görünen adres alanlarına örnek :

<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'nun (v2.3.4) en son sürümünde bunu nasıl başaracağınızı biliyor musunuz? Geçmişte önerilerinize benzer yöntemler kullandım ve 2.3.3 sürümüne kadar her zaman çalıştılar.
Karl Stephens

4

Bu dosyayı özel temanızda oluşturun:

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

Bu nedenle, setShowAddressFields adlı eylem yöntemini şu örnek gibi true gibi ayarlamanız gerekir :

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

Merhaba ilk önce magento kök klasörü bulmak sonra satıcı \ magento \ modül-müşteri \ view \ frontend \ layout customer_account_create.xml sonra 13 numaralı satıra gidin ve bu kodu kontrol edin ve 17 numaralı satıra billow bölümü koyun

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

sadece bu bölümü kullan

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

1

Asla satıcı dosyalarını düzenlemeyin !!

Bu temayı kopyalayın ve oraya devam edin, ayarın (arka ucun) peşindeyim, çünkü neden böyle kodlarsınız?

Birisi bunu bulduysa bana bildirin

Greets


0

Uygulamanızı / tasarımınızı / kullanıcı arabiriminizi / Paket / Tema / Magento_Customer / düzeninizi açın ve customer_account_create.xml dosyasını açın.

Satır num 16'ya gidin veya aşağıdaki kodu bulun.

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

Aşağıdaki koddan sonra sadece kodun altına koyun.

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

Bundan sonra, kayıt sayfasında durum açılır listesini göreceksiniz.


0

Bunu başarmanın iki yolu vardır,

  1. Şablon dosyasından

  2. Xml kullanıcısından

Yukarıda xmlbirden çok kez açıklanmıştır , bu yüzden şablon dosya yolu yapacağım.

Şablon dosyasını temanızın içinde açın [Temel dosyaları düzenleme], app / design / frontend / [vendor_name] / [theme_name] /Magento_Customer/templates/form/register.phtml

bu kodu içeren satırı bul,

getShowAddressFields()

ya içinde olabilir,

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

veya

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

Magento sürümünüze bağlı olarak.

bu kodu bu satırın önüne koy,

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

Yani, nihai çıktı şu şekilde olmalı,

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

veya

<?php $this->setShowAddressFields(true); ?>
<?php if ($block->getShowAddressFields()): ?>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.