마 젠토 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/…
nico

@Elavarasan, 해결책을 찾으셨습니까? 그렇다면 여기에 게시하십시오. 다른 사람에게 유용 할 수 있습니다.
Bojjaiah

답변:


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>

최신 버전의 Magento (v2.3.4)에서이를 달성하는 방법을 알고 있습니까? 나는 과거에 당신의 제안과 비슷한 방법을 사용했으며 2.3.3이 출시 될 때까지 항상 효과가있었습니다.
Karl Stephens

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

앱 / 디자인 / 프런트 엔드 / 패키지 / 테마 / 마 젠토 _ 고객 / 레이아웃을 열고 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

이를 달성하는 두 가지 방법이 있습니다.

  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()): ?>

마 젠토 버전에 따라

이 줄 앞에이 코드를 넣고

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