Magento 2:登録フォームに住所フィールドを表示する方法


14

顧客登録フォームに住所フィールドを表示したい(デフォルトの請求先住所に保存する)Magento 1での操作方法は知っていますが、Magento 2には驚かされます。

magento 1のようなxmlファイルの更新

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

オブザーバーから住所データを取得し、請求先住所レコードを自分で作成する必要があります。すぐに使える拡張機能を使用しないのはなぜですか?例:itoris.com/…–
ニコ

@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行目に移動してこのコードを確認し、17行目にbillowセクションを配置します

<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

ベンダーファイルを編集しないでください!!

これをあなたのテーマにコピーして、そこに進んでください、私は設定(バックエンド)を探しています、他の理由でそれをコーディングするのはなぜですか?

誰かがこれを見つけたら私に知らせて

あいさつ


0

app / design / frontend / Package / Theme / Magento_Customer / layoutを開き、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>

この後、登録ページに状態のドロップダウンが表示されます。


0

これを実現するには2つの方法があります。

  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()): ?>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.