Magento 2: Jak wyświetlić pole adresu w formularzu rejestracyjnym?


14

Chcę wyświetlić pola adresu (w celu zapisania domyślnego adresu rozliczeniowego) w formularzu rejestracji klienta. Wiem, jak to zrobić w Magento 1. Ale jestem zaskoczony Magento 2. Czy ktoś to zrobił wcześniej…?

Każda aktualizacja pliku XML jak w 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>

Będziesz musiał pobrać dane adresowe za pośrednictwem swojego obserwatora i samodzielnie utworzyć rekord adresu rozliczeniowego. Dlaczego nie skorzystać z gotowego rozszerzenia? Na przykład: itoris.com/…
nico

@Elavarasan, znalazłeś rozwiązanie? Jeśli tak, opublikuj tutaj. Może być przydatny dla innych.
Bojjaiah

Odpowiedzi:


21

Przykładowe pola adresu wyświetlanego przy użyciu klienta_konta_kreacji.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>

Czy wiesz, jak to osiągnąć w najnowszej wersji Magento (v2.3.4)? Użyłem metod podobnych do twojej sugestii w przeszłości i zawsze działały, aż do wydania 2.3.3.
Karl Stephens

4

Utwórz ten plik w niestandardowym motywie:

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

Musisz więc ustawić metodę akcji o nazwie setShowAddressFields na wartość true, jak na przykład:

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

Cześć, najpierw znajdź folder główny Magento, a następnie sprzedawca \ magento \ moduł-klient \ widok \ frontend \ układ Customer_account_create.xml, a następnie przejdź do wiersza nr 13, sprawdź ten kod i umieść sekcję billow w wierszu nr 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>

używaj tylko tej sekcji

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

1

Nigdy nie edytuj plików dostawcy !!

Skopiuj to do swojego motywu i idź tam dalej, szukam ustawienia (backend), bo dlaczego inaczej miałbyś to tak kodować?

Jeśli ktoś to znalazł, daj mi znać

Pozdrawiam


0

Wystarczy otworzyć aplikację / design / frontend / Package / Theme / Magento_Customer / layout i otworzyć customer_account_create.xml.

Przejdź do wiersza nr 16 lub znajdź poniższy kod.

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

Po poniższym kodzie po prostu umieść poniżej kodu.

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

Następnie zobaczysz menu rozwijane stanu na stronie rejestru.


0

Istnieją dwa sposoby na osiągnięcie tego,

  1. Z pliku szablonu

  2. Z xml

Powyżej wyjaśniono xmlwiele razy, więc zrobię sposób pliku szablonu.

Otwórz plik szablonu w temacie [Nie edytuj podstawowych plików], app / design / frontend / [vendor_name] / [theme_name] /Magento_Customer/templates/form/register.phtml

znajdź linię, która ma ten kod,

getShowAddressFields()

może być albo

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

lub

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

w zależności od wersji magento.

umieść ten kod przed tym wierszem,

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

Tak więc końcowy wynik powinien wyglądać tak,

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

lub

<?php $this->setShowAddressFields(true); ?>
<?php if ($block->getShowAddressFields()): ?>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.