Magento 2: Kasada sokak alanlarına yer tutucu metin nasıl eklenir?


10

Arka uçta sokak adresini 3 satır olacak şekilde ayarladım.

Her alana farklı bir yer tutucu koymak istiyorum:

  • sokak
  • Bina / Apartman
  • alan

Bu şekilde kullanıcı verileri daha yapısal bir şekilde girebilir.

Benzer bir soru burada bulunabilir:

Magento 2 - Düzen xml / ui bağımsız değişkenleriyle ödeme formlarındaki sokak adresi nasıl etkilenir?

Ancak cevaplar, sokak adres alanlarına yer tutucuları dahil etmek için bir çözüm sağlamaz .

Elde etmek istediğim, her sokak adresi alanı için farklı bir yer tutucu ayarlamak .

Kodum:

app / code / 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>

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

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

app / code / 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>

app / code / Jsp / Yer Tutucu / Eklenti / Ödeme / Engelleme / Ödeme / 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;
  }
}

Bu modülü ekledikten sonra şu adımı uyguladınız: 1. enable module: sudo bin / magento module: enable Jsp_Placeholder 2. yükseltme kurulumu: sudo bin / magento kurulumu: yükseltme 3. derleme kurulumu: sudo bin / magento kurulumu: di: compile Bunların hepsini yaptın mı?
Ashish Jagnani

Bu kod, magento 2'deki varsayılan ödeme adresi formu ile mükemmel bir şekilde çalışıyor.
Ashish Jagnani

Yanıtlar:


14

Bu dosyayı özel modülünüzün herhangi birine ekleyin:

Uygulamanın / kod / Satıcı / 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>

Uygulamanın / kod / Satıcı / modulename / registration.php

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

Uygulamanın / kod / Satıcı / 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>

Satıcı \ modulename \ Eklenti \ Ödeme \ Blok \ Ödeme \ 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.xmlDosyayı nereye eklemeliyim ? Özel modülüm yok
Luis Garcia

Güncellenmiş cevabımı kontrol edin.
Ashish Jagnani

Teşekkürler, talimatlarınızı izleyerek modülü oluşturdum ancak yer tutucular henüz görünmüyor. Modül etkin, önbelleği temizliyorum ve setup: upgrade'i çalıştırıyorum. Neyin yanlış olabileceği hakkında bir fikriniz var mı?
Luis Garcia

Ne denediğinizi sorunuzdaki tüm modül dosyalarının tam kodunu yazın.
Ashish Jagnani

Ben sadece denedim kodu ile sorum güncel
Luis Garcia
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.