Magento 2.2.0 अमान्य दस्तावेज़ तत्व 'संसाधन': विशेषता 'शीर्षक' की आवश्यकता है, लेकिन गायब है


12

मैं Magento 2.1.8 से 2.2.0 तक एक वेबसाइट को अपग्रेड करने की कोशिश कर रहा हूं

मैंने 2.2.0 के लिए संगीतकार को कॉन्फ़िगर किया है और इसे कमांड लाइन के साथ भी अपडेट किया है।

अब जब मैं magento setup:upgradeस्कीमा चलाने और निम्नलिखित नोट दिखाने पर अपना पड़ाव चलाता हूं : अधिक जानकारी के लिए pfa।

रनिंग स्कीमा आवर्ती ... अमान्य दस्तावेज़ तत्व 'संसाधन': विशेषता 'शीर्षक' की आवश्यकता है लेकिन अनुपलब्ध है। पंक्ति: १२

तत्व 'संसाधन': विशेषता 'शीर्षक' की आवश्यकता है लेकिन गायब है। पंक्ति: १३

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


जवाबों:


22

मेरा सबसे अच्छा अनुमान यह है कि आपके पास <resource>किसी भी तरह की चोरी में- etc/acl.xmlलापता होने के साथ-साथ है title। आमतौर पर यह इस मुद्दे को फेंक देता है जिसे आप एक नई भूमिका नहीं बना सकते हैं या संपादित नहीं कर सकते हैं। मैं अनुमान लगा रहा हूं कि उन्होंने 2.2 में एक अतिरिक्त जांच बनाई ताकि यह पहले से पता लगा सके।

acl.xmlअपने स्वयं के कस्टम एक्सटेंशन और / या तृतीय पक्ष एक्सटेंशन के उन लोगों की बेहतर जांच करें। कृपया ध्यान दें: title-attribute केवल नए <resource>-नोड्स के लिए आवश्यक है । इसलिए यदि आपका एक मौजूदा संसाधन नोड (एक अन्य मॉड्यूल द्वारा प्रदान किया गया) में एक नया संसाधन-नोड जोड़ रहा है, titleतो उन लोगों के लिए -attribute को जोड़ने की कोई आवश्यकता नहीं है । उदाहरण के लिए:

<!-- provided by Magento_Backend, so they already have a title: -->
<resource id="Magento_Backend::stores">
    <resource id="Magento_Backend::stores_settings">
        <!-- provided by Magento_Config: -->
        <resource id="Magento_Config::config">
            <!-- New resource! Title is required: -->
            <resource id="Vendor_Module::config_general" title="Something" translate="title"/> 
        </resource>
    </resource>
</resource>

4
कुछ समय ऐसा हो सकता है जब आप किसी ऐसे मॉड्यूल का उपयोग कर रहे हैं जो किसी अन्य प्रकार के पैरेंट मॉड्यूल जैसे मेगाप्लाजा कोर पर निर्भर करता है, और पैरेंट मॉड्यूल स्थापित नहीं है
खुले-ecommerce.org

1
मैं भी एक ही मुद्दा रहा हूँ, लेकिन दुर्भाग्य से मैं लापता शीर्षक विशेषता के साथ आदि / ac..xml फ़ाइल नहीं ढूंढ पा रहा था, मैंने सभी कस्टम एक्सटेंशन की जाँच कर ली है। क्या कोई तरीका है जिससे मैं आसानी से फाइल को देख सकूँ।
हरि स्वामीनाथन

कैसे भ्रष्ट xml के फ़ाइल नाम का उत्पादन करने पर कोई विचार?
डेविड लैम्बॉयर

Mageplaza कोर को स्थापित करना मेरे लिए इस मुद्दे को तय करता है: github.com/mageplaza/module-core
seanbreeden

30

अनुपलब्ध विशेषता वाली फ़ाइल को खोजने के लिए आप निम्न फ़ाइल को संशोधित कर सकते हैं

vendor/magento/framework/Config/Reader/Filesystem.php

निम्नलिखित कोड जोड़ें

foreach($configMerger->getDom()->getElementsByTagName('resource') as $element ){
    if (!$element->hasAttribute('title')) {
        var_dump($configMerger->getDom()->saveXML($element));
    }
}

विधि के लिए

protected function _readFiles($fileList)

तो यह दिखना चाहिए

protected function _readFiles($fileList)
{
    /** @var \Magento\Framework\Config\Dom $configMerger */
    $configMerger = null;
    foreach ($fileList as $key => $content) {
        try {
            if (!$configMerger) {
                $configMerger = $this->_createConfigMerger($this->_domDocumentClass, $content);
            } else {
                $configMerger->merge($content);
            }
        } catch (\Magento\Framework\Config\Dom\ValidationException $e) {
            throw new \Magento\Framework\Exception\LocalizedException(
                new \Magento\Framework\Phrase("Invalid XML in file %1:\n%2", [$key, $e->getMessage()])
            );
        }
    }
    if ($this->validationState->isValidationRequired()) {
        $errors = [];
        if ($configMerger && !$configMerger->validate($this->_schemaFile, $errors)) {
            foreach($configMerger->getDom()->getElementsByTagName('resource') as $element ){
                if (!$element->hasAttribute('title')) {
                    var_dump($configMerger->getDom()->saveXML($element));
                }
            }
            $message = "Invalid Document \n";
            throw new \Magento\Framework\Exception\LocalizedException(
                new \Magento\Framework\Phrase($message . implode("\n", $errors))
            );
        }
    }

    $output = [];
    if ($configMerger) {
        $output = $this->_converter->convert($configMerger->getDom());
    }
    return $output;
}

अब आप गलत XML तत्व का एक डंप देख पाएंगे।


2
आह सही, आपके समाधान ने मुझे बहुत समय बचा लिया .. हम अपने स्टोर में बहुत सारे थर्ड पार्टी एक्सटेंशन का उपयोग कर रहे हैं :)
Xaiamedia

1
बिल्कुल सही, आपने मेरा समय बचा लिया :) 3 में से एक पार्टी मॉड्यूल एक संसाधन का उल्लेख कर रहा था जिसे परिभाषित नहीं किया गया था।
निधेश

1
आप एक सच्चे नायक हैं
पाब्लो

8

मुझे हाल ही में यही समस्या थी। अवलोकन और वर्कअराउंड की एक जोड़ी।

1) यह बहुत मदद करेगा अगर 'अमान्य दस्तावेज़' के बजाय यह आपको बताए कि कौन सा दस्तावेज़ अमान्य था।

2) सेटअप: अपग्रेड प्रक्रिया को यह सुनिश्चित करने के लिए कुछ पूर्व उड़ान जांच करनी चाहिए कि यह अपग्रेड कर सकता है।

वैसे भी, यदि आप दर्जनों acl.xml फ़ाइलों में एक लापता शीर्षक खोजने की कोशिश कर रहे हैं, लेकिन ऑनलाइन जल्दी वापस एक साइट प्राप्त करने की आवश्यकता है, त्वरित समाधान आवश्यक के बजाय शीर्षक विशेषता को वैकल्पिक बनाने के लिए है।

विक्रेता / Magento / रूपरेखा / Acl / etc / acl_merged.xsd संपादित करें

लाइन का पता लगाएं

<xs:attribute name="title" type="typeTitle" use="required" />

से बदलो

<xs:attribute name="title" type="typeTitle" use="optional" />

Magento सेटअप को फिर से चलाएं: अपग्रेड करें

आपको अभी भी कुछ बिंदु पर लापता शीर्षक के साथ प्लगइन खोजने की आवश्यकता होगी।


0

मैंने नीचे दिए गए कोड में "Adminhtml" को "Backend" में बदल दिया है फिर यह काम करता है।

परिवर्तन से पहले संसाधन टैग:

**<resource id="Magento_Adminhtml::admin">**

परिवर्तन के बाद संसाधन टैग:

**<resource id="Magento_Backend::admin">**

नीचे के रूप में अंतिम कोड।

**

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Acl/etc/acl.xsd">
    <acl>
        <resources>
            <resource id="Magento_Backend::admin">
                <resource id="Neo_Testing::testing" title="testing" sortOrder="100"/>
            </resource>
        </resources>
    </acl>
</config>

**


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