Magento 2: Wie wird das Adressfeld im Registrierungsformular angezeigt?

14

Ich möchte Adressfelder (zum Speichern in der Standard-Rechnungsadresse) im Kundenregistrierungsformular anzeigen. Ich weiß, wie man es in Magento 1 macht. Aber ich bin beeindruckt von Magento 2. Hat das schon jemand gemacht?

Jedes XML-Datei-Update wie in 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
quelle
Sie müssen die Adressdaten über Ihren Beobachter abholen und den Rechnungsadressen-Datensatz selbst erstellen. Warum nicht eine fertige Erweiterung verwenden? Zum Beispiel: itoris.com/…
nico
@Elavarasan, hast du eine Lösung gefunden? Wenn ja, bitte hier posten. Es kann für andere nützlich sein.
Bojjaiah

Antworten:

20

Beispiel für die Anzeige von Adressfeldern mit 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>
Witz
quelle
4

Erstellen Sie diese Datei in Ihrem benutzerdefinierten Thema:

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

Daher müssen Sie die Aktionsmethode setShowAddressFields auf true setzen, wie im folgenden Beispiel:

<?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>
Rafael Corrêa Gomes
quelle
1

Hallo, finde zuerst den Magento-Stammordner, dann den Hersteller \ magento \ module-customer \ view \ frontend \ layout customer_account_create.xml und gehe dann zu Zeile 13, überprüfe diesen Code und setze den Abschnitt billow in Zeile 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>

Verwenden Sie nur diesen Abschnitt

<action method="setShowAddressFields">
                        <argument name="show.address.fields" xsi:type="boolean">true</argument>
                    </action>
Kanhu Charan Rath
quelle
1

Niemals Herstellerdateien bearbeiten !!

Kopiere dies in dein Theme und mache dort weiter, ich bin auf der Suche nach der Einstellung (Backend), weil warum sonst würdest du es so codieren?

Wenn jemand dies gefunden hat, lass es mich wissen

Grüße

Wim DesignIT
quelle
0

Öffnen Sie einfach Ihre App / design / frontend / Package / Theme / Magento_Customer / layout und öffnen Sie customer_account_create.xml.

Gehen Sie zu Zeile 16 oder suchen Sie den folgenden Code.

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

Nach dem unteren Code einfach den unteren Code einfügen.

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

Danach wird auf der Registerseite ein Dropdown-Status angezeigt.

Nikul
quelle
0

Dafür gibt es zwei Möglichkeiten:

  1. Aus der Vorlagendatei

  2. Aus xml

Oben xmlmehrfach erklärt , also mache ich jetzt die Vorlagendatei.

Öffnen Sie die Vorlagendatei in Ihrem Design. app / design / frontend / [Herstellername] / [Vorlagenname] /Magento_Customer/templates/form/register.phtml

Finde die Zeile, die diesen Code hat,

getShowAddressFields()

es könnte entweder in sein,

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

oder

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

abhängig von deiner magento version.

setze diesen Code vor diese Zeile,

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

Die endgültige Ausgabe sollte also so aussehen:

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

oder

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