Magento 2: Làm cách nào để thêm văn bản giữ chỗ vào các trường đường phố trong thanh toán?


10

Ở back-end Tôi đã đặt địa chỉ đường phố có 3 dòng.

Tôi muốn đặt một trình giữ chỗ khác nhau trong mỗi lĩnh vực:

  • đường phố
  • Tòa nhà / Chung cư
  • Khu vực

Bằng cách này, người dùng có thể nhập dữ liệu theo cách có cấu trúc hơn.

Một câu hỏi tương tự có thể được tìm thấy ở đây:

Magento 2 - Cách ảnh hưởng đến địa chỉ đường phố trong các hình thức thanh toán với các đối số xml / ui bố cục

Tuy nhiên, câu trả lời không cung cấp giải pháp bao gồm giữ chỗ trong các trường địa chỉ đường phố.

Những gì tôi muốn đạt được là đặt một trình giữ chỗ khác nhau cho mỗi trường địa chỉ đường phố .

Mã của tôi:

ứng dụng / mã / Jsp / Placeholder / 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>

ứng dụng / mã / Jsp / giữ chỗ / đăng ký.php:

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

ứng dụng / mã / Jsp / Placeholder / 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>

ứng dụng / mã / Jsp / Placeholder / Plugin / Checkout / Block / Checkout / AttributionMerger / 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;
  }
}

Sau khi thêm mô-đun này, bạn đã thực hiện các bước sau: 1. kích hoạt mô-đun: mô-đun sudo bin / magento: bật Jsp_Placeholder 2. cài đặt nâng cấp: sudo bin / magento setup: nâng cấp 3. thiết lập biên dịch: sudo bin / magento setup: di: compile Have bạn đã làm tất cả những điều này?
Ashish Jagnani

Các mã này hoạt động hoàn hảo với mẫu địa chỉ thanh toán mặc định trong magento 2.
Ashish Jagnani

Câu trả lời:


14

Thêm các tệp này vào bất kỳ mô-đun tùy chỉnh nào của bạn:

ứng dụng / mã / Nhà cung cấp / 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>

ứng dụng / mã / Nhà cung cấp / ModuleName / đăng ký.php

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

ứng dụng / mã / Nhà cung cấp / 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>

Nhà cung cấp \ ModuleName \ Plugin \ Checkout \ Block \ Checkout \ AttributionMerger \ 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;
  }
}

Tôi nên thêm di.xmltập tin vào đâu? Tôi không có bất kỳ mô-đun tùy chỉnh nào
Luis Garcia

Pl kiểm tra câu trả lời cập nhật của tôi.
Ashish Jagnani

Cảm ơn, tôi đã tạo mô-đun theo hướng dẫn của bạn nhưng trình giữ chỗ chưa hiển thị. Mô-đun được bật, tôi dọn bộ nhớ cache và chạy thiết lập: nâng cấp. Có bất cứ ý tưởng những gì có thể sai?
Luis Garcia

Viết mã chính xác của bạn về tất cả các tệp của mô-đun trong câu hỏi của bạn những gì bạn đã cố gắng.
Ashish Jagnani

Tôi vừa cập nhật câu hỏi của mình với mã tôi đã thử
Luis Garcia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.