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.