चेकआउट चरण में बदलाव करते समय संपत्ति में वर्ग Magento \ Quote \ Api \ Data \ AddressInterface में संबंधित सेटर नहीं होता है


18

1 - मैं customer_address में एक eav विशेषता जोड़ता हूं

$attributesInfo = [
    'reference' => [
         'label' => 'Reference',
         'type' => 'varchar',
         'input' => 'text',
         'position' => 100,
         'visible' => true,
         'required' => false,
    ],
];

foreach ($attributesInfo as $attributeCode => $attributeParams) {
    $customerSetup->addAttribute('customer_address', $attributeCode, $attributeParams);
}

2 - मैंने अपने मॉड्यूल में एक्सटेंशन विशेषता जोड़ी

<extension_attributes for="Magento\Quote\Api\Data\AddressInterface">
    <attribute code="reference" type="string"/>
</extension_attributes>

मेरी आवश्यकता के अनुसार config.js संदर्भ क्षेत्र जोड़ने के लिए कुछ जावास्क्रिप्ट फ़ाइल को ओवरराइड करता हूं

var config = {
"map": {
    "*": {
        "Magento_Checkout/js/model/shipping-save-processor/default" : "Agr_Checkout/js/shipping-save-processor-default-override",
        "Magento_Customer/js/model/customer/address" : "Agr_Checkout/js/model/customer/address",
        "Magento_Checkout/js/model/address-converter" : "Agr_Checkout/js/model/address-converter",
        "Magento_Checkout/js/model/new-customer-address" : "Agr_Checkout/js/model/new-customer-address"
    }
}

3 - मैं पुष्टि करता हूं कि संदर्भ क्षेत्र पते में भेज रहा है

यहाँ छवि विवरण दर्ज करें

4 - जब मैं अपनी शिपिंग जानकारी (अगला पर क्लिक करता हूं) भेजता हूं तो मुझे यह त्रुटि मिल रही है: "संपत्ति" संदर्भ "वर्ग में" मैगेंटो \ _ \ _ \ "डेटा \ AddressInterface" श्रेणी में संबंधित सेटर नहीं है।

यहाँ छवि विवरण दर्ज करें

मैं पहले से ही ऐसा करता हूं: - स्वच्छ और फ्लश मैजेंटो कैश - रन सेटअप: अपग्रेड - रन सेटअप: दी: संकलन

मैं क्या गलत कर रहा हूँ?


क्या जवाब काम के नीचे था?
स्टीव जी

मैंने हार्ड sql प्रविष्टि द्वारा हल किया, पता_id के साथ अद्यतन डी संदर्भ के लिए एक स्क्रिप्ट निष्पादित करना, मुझे पता है कि गलत है लेकिन मैं थोड़ा जल्दी था, मैं परीक्षण करूँगा और आपको बाद में एक प्रतिक्रिया दूंगा।
अल्लामर्ग

मुझे नहीं लगता कि आपको दोषी ठहराया जा सकता है ... जाहिरा तौर पर आप केवल एंटरप्राइज़ में custom_attributes जोड़ सकते हैं और अब तक मुझे इसके आसपास कोई "आसानी से अनुकूलन योग्य चेकआउट" तरीका नहीं मिला है।
LM_Fielding

किसी भी अद्यतन के बारे में?
Magento2 Devloper

@allamgr मैं भी नए ग्राहक पता विशेषता के साथ एक ही मुद्दे का सामना कर रहा हूं क्या आपने इसके लिए समाधान प्राप्त किया? क्या आप इस पर मुझे अपने विचार साझा कर सकते हैं prnt.sc/iovkp2
के

जवाबों:


1

एक ईआरवी सेटअप या अपग्रेड स्क्रिप्ट में विशेषताओं को स्थापित करना सबसे अच्छा काम करता है, और स्वचालित रूप से आपके द्वारा इसे जोड़ने के लिए अनुरोध करने वाले रूपों में जोड़ देगा।

    class InstallData implements InstallDataInterface
    {
        private $_eavSetupFactory;
        private $_eavConfig;
        private $_attributeResource;
        protected $_logger;

        public function __construct(EavSetupFactory $eavSetupFactory, Config $eavConfig, Attribute $attributeResource, Monolog $logger)
        {
            $this->_eavSetupFactory = $eavSetupFactory;
            $this->_eavConfig = $eavConfig;
            $this->_attributeResource = $attributeResource;
            $this->_logger = $logger;
        }

        public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
        {
            $eavSetup = $this->_eavSetupFactory->create(['setup' => $setup]);
            $addressAttributes = [
        'attribute1' => [
            'type' => 'int',
            'label' => 'attribute1',
            'input' => 'text',
            'unique' => true,
            'required' => false,
            'visible' => true,
            'user_defined' => false,
            'position' => 100,
            'system' => false,
            'adminhtml_only' => 0
        ],
        'attribute2' => [
            'type' => 'int',
            'label' => 'attribute2',
            'input' => 'text',
            'required' => false,
            'visible' => true,
            'user_defined' => false,
            'position' => 110,
            'system' => false,
            'adminhtml_only' => 1
        ]
    ];

    $usedInFormsAddress = [
            'adminhtml_customer_address',
            'customer_address_edit',
            'customer_register_address'
        ];

    foreach ($addressAttributes as $code => $options) {
        $eavSetup->addAttribute(
            'customer_address',
            $code,
            $options
        );

        try {
            $attribute = $this->_eavConfig->getAttribute('customer_address', $code);
            $attribute->setData(
                'used_in_forms',
                $usedInFormsAddress
            );
            $this->_attributeResource->save($attribute);
        } catch (LocalizedException $exception) {
            $this->_logger->critical($exception->getMessage());
        } catch (Exception $exception) {
            $this->_logger->critical($exception->getMessage());
        }
    }

यहाँ छवि विवरण दर्ज करें

यहां यह कोड प्रपत्रों में जोड़ देगा और अगले चरण में सहेजने या जाने में कोई समस्या नहीं होगी

$usedInFormsAddress = [
            'adminhtml_customer_address',
            'customer_address_edit',
            'customer_register_address'
        ];

try {
            $attribute = $this->_eavConfig->getAttribute('customer_address', $code);
            $attribute->setData(
                'used_in_forms',
                $usedInFormsAddress
            );
            $this->_attributeResource->save($attribute);
        } catch (LocalizedException $exception) {
            $this->_logger->critical($exception->getMessage());
        } catch (Exception $exception) {
            $this->_logger->critical($exception->getMessage());
        }

0

कस्टम विशेषताओं के माध्यम से इसे स्थापित करने का प्रयास करें।

उदाहरण:

...
 custom_attribute: [{"attribute_code": "reference", "value": "Your value"}]
...

क्या आपको कभी यह काम करने के लिए मिला या यह केवल एक प्रयोग है?
LM_Fielding

मुझे यह काम मिला
फीनिक्स128_रीकॉर्डो

सामुदायिक संस्करण के साथ? अगर आप यह प्रदर्शित कर सकते हैं कि मैं इनाम के साथ भी इसकी बहुत सराहना करूंगा।
LM_Fielding

1
यह एक कस्टम अलग किए गए दृश्य चेकआउट प्रक्रिया पर Magento2 एंटरप्राइज संस्करण के साथ था। मुझे वो कोड सर्च करना है। यह पुराना काम है।
फीनिक्स128_रीकॉर्डो

कृपया मुझे दिखाओ अगर तुम इसे पाओ, लेकिन मुझे नहीं लगता कि यह उपलब्ध है।
LM_Fielding

0

आप अनुरोध में विशेषता कैसे पास करते हैं? आप उस तरह ब्राउज़र कंसोल की जाँच कर सकते हैं

{
    ...
    extension_attributes: {
         reference: "value"
    }
}

यह सही है। आप var फ़ोल्डर और जेनरेट किया गया फ़ोल्डर var / cache var / page_cache var / view_proceed और generate / निकाल सकते हैं ।

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