Magento के 2 स्टोर स्विचर त्रुटि "सेक्शन-config.js" में अन-टाइप किए गए टाइप: अपरिभाषित (...) की संपत्ति '*' को नहीं पढ़ सकते


12

मैं अपने कस्टम थीम में एक कस्टम स्टोर स्विचर लागू कर रहा हूं।

ब्लॉक टेम्पलेट निम्नानुसार है:

<?php if (count($block->getStores())>1): ?>
    <?php $id = $block->getIdModifier() ? '-' . $block->getIdModifier() : ''?>

    <span><?php echo $block->escapeHtml($block->getStoreName()) ?></span>

    <span>/</span>

    <?php foreach ($block->getStores() as $_lang): ?>
        <?php if ($_lang->getId() != $block->getCurrentStoreId()): ?>
            <span class="view-<?php echo $block->escapeHtml($_lang->getCode()); ?> switcher-option">
                <a href="#" data-post='<?php /* @escapeNotVerified */ echo $block->getTargetStorePostData($_lang); ?>'>
                    <?php echo $block->escapeHtml($_lang->getName()) ?>
                </a>
            </span>
        <?php endif; ?>
    <?php endforeach; ?>

<?php endif; ?>

नए स्टोर के लिंक को सही ढंग से प्रदर्शित किया गया है, इसलिए मुझे लगता है कि xml सामान ठीक है, लेकिन क्लिक करने पर मुझे निम्नलिखित त्रुटि प्राप्त होती है:

अनुभाग-config.js: 33 बिना पढ़े टाइपर: अपरिभाषित (...) की संपत्ति '*' नहीं पढ़ सकते हैं

उत्पन्न htmlनिम्न जैसा दिखता है:

<span class="view-it switcher-option">
  <a href="#" data-post="{"action":"http:\/\/test.mysite.eu\/stores\/store\/switch\/","data":{"___store":"it","uenc":"aHR0cDovL3Rlc3QuZnJhZ2lhY29tb21pbGFuby5ldS8,"}}">
    It
  </a>
</span>

क्या आप परिनियोजित कमांड चलाते हैं और var फ़ोल्डर निकालते हैं?
राकेश जेसादिया ३०'१६ को

नहीं XD मैं इसे करूँगा और अनुवर्ती
davideghz

मैं बस sudo php bin/magento setup:static-content:deployw / o किसी भी भाग गया । मुझे varफ़ोल्डर क्यों निकालना चाहिए ? वास्तव में मुझे क्या निकालना चाहिए?
davideghz

आपको var फ़ोल्डर की सभी सामग्री को निकालना है
राकेश जेसादिया

1
@davideghz क्या आपको समाधान मिला?
मोहम्मद मुजस्सम

जवाबों:


14

मुझे भी यही समस्या थी और पता चला कि इन दोनों ब्लॉकों को थीम में अनुकूलन के कारण नहीं बुलाया गया था।

<referenceContainer name="content">वेंडर / मैगनेटो / मॉड्यूल-ग्राहक / दृश्य / दृश्य / लेआउट / default.xml में दो ब्लॉक प्रति डिफ़ॉल्ट जोड़े गए हैं ।

अपने लेआउट में इन ब्लॉकों को फिर से जोड़ने का प्रयास करें। xml:

<block name="customer.section.config" class="Magento\Customer\Block\SectionConfig"
    template="Magento_Customer::js/section-config.phtml"/>
<block name="customer.customer.data"
    class="Magento\Customer\Block\CustomerData"
    template="Magento_Customer::js/customer-data.phtml"/>

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

1
बस इसी तरह की समस्या थी .. github.com/SnowdogApps/magento2-theme-blank-sass (Magento 2.2.6) का उपयोग करते समय । ऊपर के दो ब्लॉकों को जोड़ने से समस्या ठीक हो गई। धन्यवाद
giolliano Sulit

6

हमारे प्रोजेक्ट पर हमने इसे section-config.jsविधि में फ़ाइल में तय किया getAffectedSections(जो हमारी त्रुटि थी)।
हमने अंतिम पंक्ति बदल दी:

return _.union(_.toArray(actions), _.toArray(sections['*']));

निम्नलिखित में से एक:

return (sections && sections.length > 0) ? _.union(_.toArray(actions), _.toArray(sections['*'])) : {};

कोई खंड प्रभावित होने पर वास्तव में खाली सरणी देता है।


क्या आपका समाधान अच्छी तरह से काम करता है?
जारेड चू

1
हाँ, यह एक कार्यशील बदलाव था, लेकिन IIRC, हमारे मुद्दे की असली जड़ अंत में JS API का मामूली दुरुपयोग था। इसने इस सुधार को अप्रासंगिक नहीं बनाया, यह अभी भी एक सुरक्षा है कि यह सुनिश्चित करता है कि कोड चल रहा है और महत्वपूर्ण त्रुटि के मामलों में नहीं रुकता है।

1
धन्यवाद, यह काम कर रहा है ..
रवि सोनी

यह मेरे लिए भी काम कर रहा है। लेकिन कुछ श्रेणियों में जब मैं स्टोर व्यू बदलता हूं, तो स्टोर व्यू बदल जाने के बाद मुझे अमान्य फॉर्म कुंजी मिलती है। कृपया पृष्ठ ताज़ा करें। हालांकि इसका कोई रूप नहीं है .... मैं उलझन में हूं
जीजी

0

एक ही समस्या का सामना करते दौड़ा भले ही customer.section.configऔर customer.customer.dataठीक से पेज में लोड कर रहे थे।

मेरे मामले में हालांकि ऐसा हुआ क्योंकि एक एक्सटेंशन ने खंड-पुनः लोड को बहुत पहले ट्रिगर करने की कोशिश की (अनुभाग-config.js को सही कॉन्फ़िगरेशन के साथ लोड किया गया था)।

getAffectedSectionsअनुभाग-config.js का एक ब्रेकपॉइंट जोड़कर और url चर की जांच करके इसे हल करने का प्रबंधन किया गया । ग्राहक के बाद लोड करने के लिए विस्तार जेएस को स्थानांतरित कर दिया। शेष। ब्लॉक ब्लॉक:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <move element="extension.js.block" destination="content" after="customer.section.config"/> 
    </body>
</page>

0

हमारे मामले में यह एक डिफ़ॉल्ट टेम्पलेट में थोड़ा सा कोड था जो कि ग्राहक-डेटा लोड कर रहा था। जेएस फाइल के बाद इसे पहले ही सफलता पृष्ठ पर बुलाया गया था।

हमें फ़ाइल मिली: vendor/magento/module-checkout/view/frontend/templates/success.phtml

इस कोड को लोड कर रहा था:

<script>
    require([
        'Magento_Customer/js/customer-data'
    ], function (customerData) {
        var sections = ['cart'];
        customerData.invalidate(sections);
        customerData.reload(sections, true);
    });
</script>

इस कोड को हटाकर इसे तय किया, जो हमने अपनी थीम टेम्प्लेट डायरेक्टरी में इस फाइल की एक कॉपी बनाकर और ऑफेंडिंग कोड स्निपेट को हटाकर किया।

आप Chrome देव टूल का उपयोग यह पता लगाने के लिए कर सकते हैं कि त्रुटि कहाँ हो रही थी और फिर उस फ़ाइल में आपके स्थानीय देव पर एक console.trace();कॉल में यह स्थापित करने के लिए कि फ़ंक्शन को कॉल करने के लिए क्या कंसोल में त्रुटि फेंक रहा है। श्रृंखला का पालन करें जहाँ आप चीजों को अनुचित तरीके से लोड कर रहे हैं।

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