Magento 2: चेकआउट में स्ट्रीट फ़ील्ड में प्लेसहोल्डर टेक्स्ट कैसे जोड़ें?


10

बैक-एंड में मैंने सड़क का पता 3 लाइनों का है।

मैं प्रत्येक क्षेत्र में एक अलग प्लेसहोल्डर रखना चाहता हूँ:

  • सड़क
  • भवन / अपार्टमेंट
  • क्षेत्र

इस तरह से उपयोगकर्ता अधिक संरचित तरीके से डेटा दर्ज कर सकता है।

इसी तरह का प्रश्न यहां पाया जा सकता है:

Magento 2 - लेआउट xml / ui तर्कों के साथ चेकआउट रूपों में सड़क के पते को कैसे प्रभावित करें

हालाँकि उत्तर सड़क पता क्षेत्रों में प्लेसहोल्डर्स को शामिल करने के लिए एक समाधान प्रदान नहीं करता है

मैं जो हासिल करना चाहता हूं, वह प्रत्येक स्ट्रीट एड्रेस फ़ील्ड के लिए एक अलग प्लेसहोल्डर सेट कर रहा है ।

मेरा कोड:

एप्लिकेशन / कोड / जेएसपी / प्लेसहोल्डर / आदि / मॉड्यूल। 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>

एप्लिकेशन / कोड / जेएसपी / प्लेसहोल्डर / पंजीकरण। एफपी:

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

ऐप / कोड / Jsp / प्लेसहोल्डर / 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>

ऐप / कोड / जेएसपी / प्लेसहोल्डर / प्लगिन / चेकआउट / ब्लॉक / चेकआउट / एट्रिब्यूट / चार्जर / प्लग इन:

<?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 bin / magento मॉड्यूल: सक्षम करें Jsp_Placeholder 2. उन्नयन सेटअप: sudo bin / magento सेटअप: नवीनीकरण 3. संकलन सेटअप: sudo bin / magento सेटअप: di: संकलन करें आपने ये सब किया?
आशीष जगनानी

ये कोड पूरी तरह से Magento 2 में डिफॉल्ट चेकआउट एड्रेस फॉर्म के साथ काम कर रहा है।
आशीष जगनानी

जवाबों:


14

अपने कस्टम मॉड्यूल में ये फ़ाइल जोड़ें:

एप्लिकेशन / कोड / विक्रेता / 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>

एप्लिकेशन / कोड / विक्रेता / ModuleName / registration.php

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

एप्लिकेशन / कोड / विक्रेता / 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>

विक्रेता \ ModuleName \ प्लगइन \ चेकआउट \ ब्लॉक \ चेकआउट \ 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फ़ाइल कहाँ जोड़ना चाहिए ? मेरे पास कोई कस्टम मॉड्यूल नहीं है
लुइस गार्सिया

Pl मेरे अद्यतन उत्तर की जाँच करें।
आशीष जगनानी

धन्यवाद, मैंने आपके निर्देशों का पालन करते हुए मॉड्यूल बनाया है, लेकिन प्लेसहोल्डर अभी तक नहीं दिखा है। मॉड्यूल सक्षम है, मैं कैश को साफ करता हूं, और सेटअप चलाता हूं: उन्नयन। क्या कोई विचार है जो गलत हो सकता है?
लुइस गार्सिया

अपने प्रश्न में मॉड्यूल की सभी फाइलों का अपना सटीक कोड लिखें जो आपने कोशिश की है।
आशीष जगनानी

मैंने अभी-अभी अपने कोड के साथ अपने सवाल को अपडेट किया
लुइस गार्सिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.