অবশেষে আমি ম্যাজেন্টো কমিউনিটি ফোরামে এই সমস্যার সমাধান খুঁজে পেয়েছি, যা @ ডুনাগান ৫৮৮7 সরবরাহ করেছিল । আমি এটি এখানে 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'));
দয়া করে নীচে একটি কার্যকরী সংস্করণ কমান্ড লাইন বর্গটি আবিষ্কার করুন:
অ্যাপ্লিকেশন / কোড / নামস্থান / মডিউল / কনসোল / 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
এমওয়াইএসকিউএলটির জন্য একটি নিম্ন সেটিংয়ের কারণে ঘটবে তবে সীমা ইতিমধ্যে যথেষ্ট ছিল এবং এটি উত্থাপনের বিষয়টি সমাধান করা হয়নি, তাই আমি আরও খনন করার সিদ্ধান্ত নিয়েছি। একটি নির্মূলকরণ প্রক্রিয়াটি চালিয়ে যাওয়ার পরে অবশেষে আমি জানতে পারলাম যে অনুরূপ কমান্ড ফাংশন ব্যবহার করে দুটি মডিউলের মধ্যে এটিই প্রধান পার্থক্য, যা থেকে মডিউলগুলির মধ্যে একটি সক্রিয় হওয়ার সাথে সাথেই এই সমস্যাটি সৃষ্টি করছে।
যদিও আমি এই সমস্যা বা বিরোধের উত্স খুঁজে পেতে খনন করি নি, আমি ভেবেছিলাম যে এখানে আমার অনুসন্ধানগুলি ভাগ করে নেওয়া ভাল ধারণা হবে যেহেতু অন্যরা এটি কার্যকর হতে পারে।
[আপডেট - 2]
সঠিক পদ্ধতি:
ম্যাজেন্টোকে ২.২. এক্স এ উন্নীত করার পরে আমরা বুঝতে পেরেছি যে অঞ্চল নির্ধারণের জন্য এটি সঠিক পদ্ধতি:
অ্যাপ্লিকেশন / কোড / নামস্থান / মডিউল / কনসোল / 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
...
}
...
}
নোট করুন যে আমরা অবজেক্ট ম্যানেজারটি ব্যবহার করি না এবং অঞ্চলটি ফাংশনের মধ্যে এটির প্রয়োজন হয় এবং কনস্ট্রাক্টরের মধ্যে নয়। এটি অঞ্চল নির্ধারণের আনুষ্ঠানিক উপায় এবং এটি সমস্ত ম্যাজেন্টো 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';
...