Magento 2: วิธีเพิ่มข้อความตัวยึดตำแหน่งลงในช่องถนนในการชำระเงินได้อย่างไร


10

ในส่วนหลังฉันได้กำหนดที่อยู่ให้มี 3 บรรทัด

ฉันต้องการวางตัวแทนที่แตกต่างกันในแต่ละฟิลด์:

  • ถนน
  • อาคาร / อพาร์ทเม้นท์
  • พื้นที่

วิธีนี้ผู้ใช้สามารถป้อนข้อมูลในรูปแบบที่มีโครงสร้างมากขึ้น

คำถามที่คล้ายกันสามารถพบได้ที่นี่:

Magento 2 - วิธีส่งผลกระทบต่อที่อยู่ในรูปแบบเช็คเอาต์โดยมีอาร์กิวเมนต์ xml / ui ของโครงร่าง

อย่างไรก็ตามคำตอบไม่ได้มีวิธีการแก้ปัญหาที่จะรวมตัวยึดในฟิลด์ที่อยู่

สิ่งที่ฉันต้องการที่จะบรรลุคือการตั้งค่าตัวยึดที่แตกต่างกันสำหรับแต่ละเขตข้อมูลที่อยู่บนถนน

รหัสของฉัน:

แอป / รหัส / Jsp / ตัวยึด / etc / module.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
  <module name="Jsp_Placeholder" setup_version="2.0.0" />
</config>

app / code / Jsp / Placeholder / registration.php:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
  \Magento\Framework\Component\ComponentRegistrar::MODULE,
  'Jsp_Placeholder',
  __DIR__
);

แอป / รหัส / Jsp / ตัวยึด / etc / di.xml:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
  <type name="Magento\Checkout\Block\Checkout\AttributeMerger">
    <plugin name="shippingAddress" type="Jsp\Placeholder\Plugin\Checkout\Block\Checkout\AttributeMerger\Plugin"/>
  </type>
</config>

แอป / รหัส / Jsp / ตัวยึด / ปลั๊กอิน / ชำระเงิน / บล็อก / ชำระเงิน / AttributeMerger / Plugin.php:

<?php
namespace Jsp\Placeholder\Plugin\Checkout\Block\Checkout\AttributeMerger;
class Plugin {
  public function afterMerge(\Magento\Checkout\Block\Checkout\AttributeMerger $subject, $result)
  {
    if (array_key_exists('street', $result)) {
      $result['street']['children'][0]['placeholder'] = __('Calle y número exterior');
      $result['street']['children'][1]['placeholder'] = __('Interior / Edificio / Depto.');
      $result['street']['children'][2]['placeholder'] = __('Colonia');
    }
    return $result;
  }
}

หลังจากเพิ่มโมดูลนี้คุณได้ทำตามขั้นตอนเหล่านี้แล้ว: 1. เปิดใช้งานโมดูล: sudo bin / magento module: เปิดใช้งาน Jsp_Placeholder 2. การตั้งค่าการอัปเกรด: การติดตั้ง sudo bin / magento: อัพเกรด 3. การตั้งค่าคอมไพล์: การติดตั้ง sudo bin / magento: di: compile have คุณทำทั้งหมดนี้เหรอ
Ashish Jagnani

รหัสเหล่านี้ทำงานได้อย่างสมบูรณ์กับแบบฟอร์มการชำระเงินที่อยู่เริ่มต้นใน magento 2
Ashish Jagnani

คำตอบ:


14

เพิ่มไฟล์เหล่านี้ในโมดูลที่กำหนดเองของคุณ:

app / รหัส / ผู้ขาย / ModuleName / etc / module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
  <module name="Vendor_ModuleName" setup_version="2.0.0" />
</config>

app / รหัส / ผู้ขาย / ModuleName / registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
  \Magento\Framework\Component\ComponentRegistrar::MODULE,
  'Vendor_ModuleName',
  __DIR__
);

app / รหัส / ผู้ขาย / ModuleName / etc / di.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
  <type name="Magento\Checkout\Block\Checkout\AttributeMerger">
    <plugin name="shippingAddress" type="Vendor\ModuleName\Plugin\Checkout\Block\Checkout\AttributeMerger\Plugin"/>
  </type>
</config>

ผู้ขาย \ ModuleName \ ปลั๊กอิน \ ร้า \ บล็อก \ ร้า \ AttributeMerger \ Plugin.php

<?php
namespace Vendor\ModuleName\Plugin\Checkout\Block\Checkout\AttributeMerger;

class Plugin
{
  public function afterMerge(\Magento\Checkout\Block\Checkout\AttributeMerger $subject, $result)
  {
    if (array_key_exists('street', $result)) {
      $result['street']['children'][0]['placeholder'] = __('Flat No/House No/Building No');
      $result['street']['children'][1]['placeholder'] = __('Street Address');
      $result['street']['children'][2]['placeholder'] = __('Landmark');
    }

    return $result;
  }
}

ฉันจะเพิ่มdi.xmlไฟล์ได้ที่ไหน? ฉันไม่มีโมดูลที่กำหนดเอง
Luis Garcia

โปรดตรวจสอบคำตอบที่อัปเดตของฉัน
Ashish Jagnani

ขอขอบคุณฉันสร้างโมดูลตามคำแนะนำของคุณแล้ว แต่ตัวยึดตำแหน่งยังไม่ปรากฏ เปิดใช้งานโมดูลฉันล้างแคชและเรียกใช้การตั้งค่า: อัปเกรด มีความคิดว่ามีอะไรผิดปกติหรือไม่?
Luis Garcia

เขียนโค้ดที่ถูกต้องของไฟล์โมดูลทั้งหมดในคำถามของคุณว่าคุณได้ลองอะไรไปแล้ว
Ashish Jagnani

ฉันเพิ่งอัปเดตคำถามของฉันด้วยรหัสที่ฉันได้ลอง
Luis Garcia
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.