Magento 2: Як додати текст заповнення до вуличних полів у касі?


10

Назад, я встановив адресу вулиці, щоб вона мала 3 рядки.

Я хотів би поставити інший заповнювач у кожному полі:

  • Вулиця
  • Будівля / Квартира
  • Площа

Таким чином користувач може вводити дані більш структурованим чином.

Подібне запитання можна знайти тут:

Magento 2 - Як вплинути на адресу вулиці у формах оформлення замовлення з аргументами xml / ui аргументами

Однак відповіді не пропонують рішення включити заповнювачі у поля адрес вулиці.

Що я хочу досягти - це встановити інший заповнювач для кожного поля адреси вулиці .

Мій код:

app / code / 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 / заповнювач / registration.php:

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

app / code / Jsp / заповнювач місця / тощо / 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 / magento: увімкніть Jsp_Placeholder 2. налаштування оновлення: sudo bin / magento setup: оновлення 3. налаштування компіляції: sudo bin / magento setup: di: compile Have ти все це робив?
Ashish Jagnani

Цей код ідеально працює із формою реєстрації замовлення за замовчуванням у
магенто

Відповіді:


14

Додайте ці файли в будь-який спеціальний модуль:

app / code / Постачальник / ModuleName / тощо / 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 / Постачальник / ModuleName / registration.php

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

app / code / Постачальник / ModuleName / тощо / 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 \ 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;
  }
}

Де слід додати di.xmlфайл? У мене немає спеціальних модулів
Луїс Гарсія,

Перевірте мою оновлену відповідь.
Ashish Jagnani

Дякую, я створив модуль відповідно до ваших інструкцій, але заповнювачі ще не з’являються. Модуль включений, я очищую кеш і запускаю setup: upgrade. У вас є ідея, що може бути не так?
Луїс Гарсія

Напишіть точний код усіх файлів модуля у своєму питанні, що ви пробували.
Ashish Jagnani

Я щойно оновив своє запитання з кодом, який я спробував
Луїс Гарсія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.