Magento 2: Как добавить текст-заполнитель в поля улиц при оформлении заказа?
В фоновом режиме я установил адрес улицы в 3 строки.
Я бы хотел поместить в каждое поле другой заполнитель:
- Улица
- Здание/Квартира
- Область
Таким образом, пользователь может вводить данные более структурированным способом.
Аналогичный вопрос можно найти здесь:
Однако ответы делают не предоставляет решения для включения заполнителей в поля адреса .
Чего я хочу добиться, так это установить другой заполнитель для каждого поля адреса.
Мой код:
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/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;
}
}
1 answers
Добавьте эти файлы в любой из ваших пользовательских модулей:
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/registration.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;
}
}