Magento 2: Jak dodać tekst zastępczy do pól ulic przy kasie?

10

W back-endie ustawiłem adres na 3 linie.

Chciałbym wstawić inny symbol zastępczy w każdym polu:

  • Ulica
  • Budynek / mieszkanie
  • Powierzchnia

W ten sposób użytkownik może wprowadzać dane w bardziej uporządkowany sposób.

Podobne pytanie można znaleźć tutaj:

Magento 2 - Jak wpływać na adres ulicy w formularzach płatności za pomocą argumentów xml / ui układu

Jednak odpowiedzi nie zapewniają rozwiązania pozwalającego na umieszczenie symboli zastępczych w polach adresów ulicznych.

Chcę osiągnąć inny symbol zastępczy dla każdego pola adresu .

Mój kod:

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 / register.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 / Placeholder / Plugin / Checkout / Block / Checkout / 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;
  }
}
Luis Garcia
źródło
Po dodaniu tego modułu wykonaj następujące czynności: 1. włącz moduł: sudo bin / magento moduł: włącz Jsp_Placeholder 2. zainstaluj aktualizację: sudo bin / magento: zaktualizuj 3. skompiluj konfigurację: sudo bin / magento: di: kompiluj zrobiłeś to wszystko?
Ashish Jagnani,
Ten kod doskonale działa z domyślnym formularzem adresu kasy w magento 2.
Ashish Jagnani

Odpowiedzi:

14

Dodaj te pliki do dowolnego niestandardowego modułu:

app / code / Vendor / 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 / code / Vendor / ModuleName / register.php

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

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

Vendor \ ModuleName \ Plugin \ Checkout \ Block \ Checkout \ 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;
  }
}
Ashish Jagnani
źródło
Gdzie powinienem dodać di.xmlplik? Nie mam żadnych niestandardowych modułów
Luis Garcia,
Pl sprawdź moją zaktualizowaną odpowiedź.
Ashish Jagnani
Dzięki, utworzyłem moduł zgodnie z instrukcjami, ale symbole zastępcze jeszcze się nie pokazują. Moduł jest włączony, czyszczę pamięć podręczną i uruchamiam setup: upgrade. Masz pojęcie, co może być nie tak?
Luis Garcia,
W swoim pytaniu wpisz dokładny kod wszystkich plików modułu, co próbowałeś.
Ashish Jagnani
Właśnie zaktualizowałem swoje pytanie kodem, którego próbowałem
Luis Garcia,