त्रुटि संदेश क्या है:
आवश्यक पैरामीटर 'theme_dir' पारित नहीं किया गया था
क्या यह Magento 2 से संबंधित है? और इस समस्या को कैसे ठीक किया जा सकता है?
त्रुटि संदेश क्या है:
आवश्यक पैरामीटर 'theme_dir' पारित नहीं किया गया था
क्या यह Magento 2 से संबंधित है? और इस समस्या को कैसे ठीक किया जा सकता है?
जवाबों:
बस अगर आप सीधे विषय को हटा रहे हैं (मैगेंटो तरीके से नहीं)।
फिर इन चरणों का पालन करें।
सामग्री को हटाएं app/design/frontend/<Vendor>
(सुनिश्चित करें कि आप इसे पहले वापस कर दें)।
फ़ोल्डर var/view_preprocessed
और की सभी सामग्री को हटा दें pub/static/frontend
।
अपनी theme
तालिका पर जाएं और अपने बनाए थीम के लिए प्रविष्टि हटाएं।
उसके बाद...
अपनी core_config_data
तालिका पर जाएं और खोज करें theme
और आपको इसमें design/theme/theme_id
अपने डिफ़ॉल्ट थीम आईडी को बदलने जैसे पथ रिकॉर्ड मिलेंगे ।
अपना कैश फ्लश करें php bin/magento cache:flush
आपको बता दें कि इसके बाद भी आपको कोई समस्या आती है।
theme
-able को ठीक किया , लेकिन core_config_data
मूल्य के बारे में भूल गया ।
setup:static-content:deploy
व्यवस्थापक यूआई में वापस चला गया।
pub/static/.htaccess
उसमें नहीं था। धन्यवाद
इस त्रुटि संदेश का मतलब है कि आपके पास एक थीम कॉन्फ़िगर है जो फ़ाइल-सिस्टम (किसी भी अधिक) पर मौजूद नहीं है।
इसके बजाय एक वैध विषय का चयन करके इसे आसानी से तय किया जा सकता है। पर जाएं सामग्री -> विन्यास , गुंजाइश (वैश्विक, वेबसाइट, store_view) का चयन करें और विषय बदल जाते हैं। आपके द्वारा यह करने के बाद कि आपको इसे सामग्री -> थीम्स से भी हटा देना चाहिए ।
मेरे मामले में मैंने वेंडर निर्देशिका से एक बाल विषय हटा दिया। लेकिन theme
तालिका में डीबी प्रविष्टि अभी भी थी । इसलिए theme
तालिका पर जाएं और हटाए गए विषय को इंगित करने वाले रिकॉर्ड को हटा दें।
composer remove vendor/theme
?
rm -rf vendor/theme
सुनिश्चित करें कि theme
तालिका प्रविष्टि और magento\app\design\frontend\<Vendor>
प्रविष्टि समान होगी।
यदि यह इस मुद्दे का कारण नहीं है।
अनावश्यक विषय को व्यवस्थापक के माध्यम से निकालें -> सामग्री -> डिजाइन -> विषय-वस्तु । इसे मिटाओ। तो यह डीबी एंट्री को भी हटा देगा।
अगर यू केवल फ़ोल्डर को हटा दें तो यह काम नहीं करेगा
यह समस्या तब भी हो सकती है जब आप एक अनुकरणीय अवस्था में हों, उदाहरण के लिए CLI कमांड में। मेरे पास एक ऐसी स्थिति थी जहां मैं सीएलआई में ई-मेल नहीं भेज सकता था, क्योंकि रैपिंग कमांड एक अनुकरणीय स्थिति में चल रहा था:
$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
// In this section the email was sent
});
उपरोक्त उदाहरण में, जब ई-मेल यह टेम्प्लेट डीआईआर निर्धारित करने की कोशिश कर रहा था, तो यह मैप करेगा global/Magento/backend
, जो कि गैर-मौजूद है। इसे ठीक करने के लिए, मुझे इसे अपने निर्माता में मैन्युअल रूप से जोड़ना होगा:
/** @var \Magento\Framework\Component\ComponentRegistrarInterface $componentRegistrar */
// Make the admin theme global accessible for sending e-mails:
\Magento\Framework\Component\ComponentRegistrar::register(
'theme',
'global/Magento/backend',
$componentRegistrar->getPath('theme', 'adminhtml/Magento/backend')
);
इस फिक्स के बाद, समस्या हल हो गई और मैं ई-मेल भेज सकता था।
अपडेट करें:
जब सीएलआई का उपयोग करके मेल भेजने की बात आती है, तो उत्सर्जन का उपयोग करने के लिए एक अधिक उचित तरीका होगा। उदाहरण के लिए:
/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
'frontend',
[$this->accountManagement, 'initiatePasswordReset'],
[
$customer->getEmail(),
AccountManagement::EMAIL_REMINDER,
$customer->getWebsiteId()
]
);
इस तरह से आपके पास अपने गंदे छोटे हैक्स नहीं हैं।
@ ठाकरे सही हैं। मुझे वही त्रुटि मिली Required parameter 'theme_dir' was not passed
। नीचे मैंने बताया कि त्रुटि के कारण मैंने क्या किया:
मैं एप्लिकेशन / डिज़ाइन / फ्रंटएंड / MyVendorTheme2 / myThemeName2 निर्देशिका में एक थीम बना रहा हूं , और फिर इसे Magento 2 व्यवस्थापक ब्राउज़र ( स्टोर> कॉन्फ़िगरेशन> थीम सेटिंग> सामान्य> डिज़ाइन थीम ) " MyVendorTheme2 - myThemeName2 " थीम का चयन करके कॉन्फ़िगर किया गया है। । लेकिन मैंने तब " myThemeName2 " निर्देशिका (मेरी नई थीम युक्त) को एक अलग (मौजूदा) विक्रेता फ़ोल्डर " MyVendorTheme1 " ऐप / डिज़ाइन / फ़्रंट / MyVendorTheme1 / myThemeName2 पर ले जाने का निर्णय लिया , और इसे " MyVendorTheme2 " फ़ोल्डर से हटा दिया यह पहले था। मैं संपत्ति संकलित करने के लिए (दीं यानी , ,grunt clean
grunt exec:myThemeName2
grunt less:myThemeName2
), और फिर मेरी थीम सबडोमेन (यानी http: // myvirtualhostdomain: myport / myvendortheme1_mythemename2_magento2_quickstart / ) पर अपना ब्राउज़र खोला ।
प्रारंभ में मुझे अनिर्दिष्ट त्रुटि मिली:
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number:
मैं का नाम बदलकर त्रुटि रिपोर्टिंग सक्षम pub/errors/local.xml.sample
करने के लिए local.xml
, और पेज रिफ्रेश किया गया। मुझे तब त्रुटि के साथ प्रस्तुत किया गया था Required parameter 'theme_dir' was not passed
।
मैंने अपने Magento 2 व्यवस्थापक ब्राउज़र ( स्टोर> कॉन्फ़िगरेशन> THEME SETTINGS> GENERAL> डिज़ाइन> डिज़ाइन थीम ) में वापस जाकर त्रुटि का समाधान किया , जिसमें मेरा पिछला और अब अमान्य डिज़ाइन विषय चयनित था, इसलिए मैंने सही चुना।
1 - व्यवस्थापक पैनल में विषयों की पहचान करने के लिए नीचे दिए गए आदेश का उपयोग करें।
n98-magerun2 dev:theme:list
2 - स्थापित थीम को पहचानने के लिए कमांड चलाएँ:
ls -lha app/design/frontend/MyThemePackage/
3- जो थीम मौजूद नहीं है, उसे बनाने के लिए नीचे दिए गए इन कमांड्स को चलाएं:
n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName
अगर कुछ भी काम नहीं किया है, तो श्रेणियों के अनुभाग की जांच करना न भूलें। वहाँ एक डिजाइन सेटिंग्स भी है। सुनिश्चित करें कि सही डिज़ाइन विषय असाइन किया गया है। मेरे मामले में, मुझे केवल कुछ श्रेणियों में त्रुटि मिल रही थी।
आप नीचे दिए गए क्वेरी को निष्पादित करके DB से अप्रयुक्त विषय को सीधे हटा सकते हैं:
delete from theme where theme_path in ('unusedtheme');
जब अनुपयोगी अप्रयुक्त विषय है, और उसके बाद आप अपना कैश जमा करेंगे
कुछ मामलों में आप कस्टम थीम को उचित तरीके से हटाते हैं तो आपको इस त्रुटि का भी सामना करना पड़ेगा। इस दशा में:
1) you have to delete that entry/row from 'theme' table.
2) set value 1 (1 for blank theme 2 for Luma what ever you want to set) against 'design/theme/theme_id'
पृष्ठ त्रुटि को ताज़ा करें।
मैंने मसला हल कर दिया। मेरे मामले में समस्या Magento2 नहीं थी, लेकिन एक गलत ऑपरेशन जो मैंने समय से पहले किया था: मैंने ऐप / डिज़ाइन / फ़्रंट / MyFolder / MyTheme में सापेक्ष पथ बनाते हुए एक थीम बनाई और इसे Magento 2 ऑनलाइन दस्तावेज़ में समझाया गया है। तब मैंने थीम को रद्द करने और इसके बजाय उचित कमांड का उपयोग करने का निर्णय लिया: बिन / मैगेंटो थीम: सीमांत / MyFolder / MyTheme की स्थापना रद्द करें मैंने सीधे फ़ोल्डर्स को हटा दिया। यह एक अच्छा संचालन नहीं है क्योंकि डेटाबेस उचित जानकारी के साथ अद्यतन नहीं है। समाधान: phpmyadmin के रूप में डेटाबेस के एक संपादक के साथ, हटाए गए फ़ोल्डरों के लिए "टेबल" थीम में रिकॉर्ड को नष्ट कर देना। मुझे उम्मीद है कि इससे सहायता मिलेगी!
मुझे पता है कि यह प्रश्न काफी पुराना है, लेकिन जब से मैं आज ही इसमें भाग गया और जल्दी से पता चला कि मेरी समस्या क्या है, मैंने अपना उत्तर उन सभी के लिए एक अनुस्मारक के रूप में पोस्ट करने का फैसला किया, जो मेरी तरह, मैगेंटो के साथ काम करने के लिए PhPStorm का उपयोग करते हैं: शाखाओं को स्विच करते समय अपनी फ़ाइलों की जांच करना याद रखें।
मेरे मामले में, मैं जिस शाखा पर काम कर रहा था, उसके पास आवश्यक विषय फाइलें नहीं थीं (जब वे थीम शाखा से मास्टर शाखा में बदल गए) तो वे PhstStorm द्वारा घिस गए क्योंकि वे अभी तक इस पर विलय नहीं हुए हैं, इस प्रकार त्रुटि।
आशा है कि यह किसी की मदद कर सकता है।
सभी थीम अस्थायी फ़ाइलों को हटाएं जो वेबसाइट पर उपयोग नहीं कर रही हैं और उस थीम से भी हटाएं जो कैश का उपयोग नहीं कर रही है और चला रही है: फ्लश