मुझे अंततः मैगेंटो कम्युनिटी फ़ोरम में इस समस्या का समाधान मिला, जो @ dunagan5887 द्वारा प्रदान किया गया था । मैंने इसे यहां magento.stackexchange.com पर साझा करने का निर्णय लिया क्योंकि इस अपवाद के लिए एक अच्छी तरह से संदर्भित समाधान से कई लाभ हो सकते हैं।
मूल सामुदायिक फ़ोरम पोस्ट का एक लिंक है: ब्लॉक के साथ ईमेल टेम्पलेट
ऐसा लगता है कि यह समाधान, @ dunagan5887 द्वारा उद्धृत ;dictates that the di.xml directive set in vendor/magento/module-developer/etc/adminhtml/di.xml is loaded.
समाधान इस सरल लाइन कोड के होते हैं:
इस $ -> _ objectManager-> कॉन्फ़िगर ($ इस -> _ configLoader-> लोड ( 'adminhtml'));
कृपया नीचे एक वर्जन कमांड लाइन क्लास लगाएं:
एप्लिकेशन / कोड / namespace / मॉड्यूल / कंसोल / Command.php
<?php
namespace NameSpace\Module\Console\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Magento\Framework\Exception\LocalizedException;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class CustomCommandClass extends Command
{
public function __construct(
\Magento\Framework\App\State $state,
\Magento\Framework\ObjectManagerInterface $objectManager,
\Magento\Framework\ObjectManager\ConfigLoaderInterface $configLoader
) {
$state->setAreaCode('frontend'); //SET CURRENT AREA
$objectManager->configure($configLoader->load('frontend')); //SOLUTION
parent::__construct();
}
...
}
बस अपने आवेदन से क्षेत्र frontend
को admin
या global
आवश्यकतानुसार बदल दें ।
[अपडेट करें]
adminhtml
स्थिर सामग्री की तैनाती के कारण क्षेत्र त्रुटियों
ऐसा लगता है कि कुछ कारणों से क्षेत्र की स्थापना के लिए adminhtml
स्थैतिक सामग्री को तैनात करते समय कुछ त्रुटियां हो रही हैं।
हम निम्नलिखित की तरह त्रुटियाँ देख रहे थे:
Fatal error: Uncaught Exception: Warning: Error while sending QUERY packet. PID=22912 in ../magento/vendor/magento/zendframework1/library/Zend/Db/Statement/Pdo.php on line 228 in ../magento/vendor/magento/framework/App/ErrorHandler.php:61
मैंने शुरू में सोचा था कि यह त्रुटि max_allowed_packet
MYSQL के लिए कम सेटिंग के कारण होगी, लेकिन चूंकि सीमा पहले से ही काफी अधिक थी और इस मुद्दे को हल नहीं कर रही थी, मैंने आगे खुदाई करने का फैसला किया। एक उन्मूलन प्रक्रिया के माध्यम से जाने के बाद, मुझे अंततः पता चला कि यह समान आदेश कार्यों का उपयोग करने वाले दो मॉड्यूल के बीच मुख्य अंतर था, जिसमें से एक मॉड्यूल सक्षम होते ही इस समस्या का कारण बन रहा था।
हालांकि मैंने इस मुद्दे या संघर्ष के स्रोत को खोजने के लिए खुदाई नहीं की है, मुझे लगा कि मेरे निष्कर्षों को यहां साझा करना एक अच्छा विचार होगा क्योंकि अन्य इसे उपयोगी पा सकते हैं।
[अद्यतन - २]
सही विधि:
Magento को 2.2.X में अपग्रेड करने के बाद हमने महसूस किया कि यह क्षेत्र सेट करने की सही विधि है:
एप्लिकेशन / कोड / namespace / मॉड्यूल / कंसोल / Command.php
<?php
namespace NameSpace\Module\Console\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Magento\Framework\Exception\LocalizedException;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class CustomCommandClass extends Command
{
public function __construct(
\Magento\Framework\App\State $state,
) {
$this->_appState = $appState;
parent::__construct();
}
...
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->_appState->setAreaCode(\Magento\Framework\App\Area::AREA_GLOBAL); //SET CURRENT AREA
...
}
...
}
ध्यान दें कि हम ऑब्जेक्ट मैनेजर का उपयोग नहीं करते हैं और इस क्षेत्र को फ़ंक्शन के भीतर सेट करने की आवश्यकता होती है और निर्माणकर्ता में नहीं। यह क्षेत्र की स्थापना का आधिकारिक तरीका है और इसे सभी Magento 2 संस्करणों के साथ निर्दोष रूप से काम करना चाहिए।
उपलब्ध क्षेत्रों की एक सूची निम्न वर्ग में उपलब्ध है:
Magento \ फ्रेमवर्क \ अनुप्रयोग \ क्षेत्र
class Area implements \Magento\Framework\App\AreaInterface
{
const AREA_GLOBAL = 'global';
const AREA_FRONTEND = 'frontend';
const AREA_ADMIN = 'admin';
const AREA_ADMINHTML = 'adminhtml';
const AREA_DOC = 'doc';
const AREA_CRONTAB = 'crontab';
const AREA_WEBAPI_REST = 'webapi_rest';
const AREA_WEBAPI_SOAP = 'webapi_soap';
...