Sonunda bu sorunun çözümünü @ dunagan5887 tarafından sağlanan Magento Topluluğu Forumlarında buldum . Birçoğu bu istisna için iyi yönlendirilmiş bir çözümden faydalanabileceği için burada magento.stackexchange.com'da paylaşmaya karar verdim .
Orijinal Topluluk Forumu gönderisine bir bağlantı var: Bloklu e-posta şablonu
@ Dunagan5887 tarafından alıntılandığı gibi bu çözüm ;dictates that the di.xml directive set in vendor/magento/module-developer/etc/adminhtml/di.xml is loaded.
Çözüm, bu Basit Kod Satırından oluşur:
$ this -> _ objectManager-> configure ($ this -> _ configLoader-> yük ( 'adminhtml'));
Lütfen aşağıda çalışan bir sürüm komut satırı sınıfı bulun:
Uygulamanın / kod / NameSpace / Modül / Konsol / 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();
}
...
}
Basitçe bölgeyi değiştirmek frontend
için admin
veya global
uygulamanın gerektirdiği şekilde.
[GÜNCELLEME]
Alan adminhtml
neden statik içerik dağıtma hataları
Bazı nedenlerden ötürü, alanın ayarlanması adminhtml
statik içerikleri dağıtırken bazı hatalara neden oluyor gibi görünüyor .
Aşağıdaki gibi hatalar görüyorduk:
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
Başlangıçta bu hatanın max_allowed_packet
MYSQL için düşük bir ayardan kaynaklanacağını düşündüm, ancak limit zaten yeterince yüksek olduğu ve sorunu çözmediği için daha fazla kazmaya karar verdim. Bir eleme sürecinden geçtikten sonra nihayet bunun benzer komut işlevlerini kullanan iki modül arasındaki ana fark olduğunu öğrendim, modüllerden biri en kısa sürede bu soruna neden oldu.
Bu sorunun veya çatışmanın kaynağını bulamamış olmama rağmen, bulgularımı burada paylaşmanın iyi bir fikir olacağını düşündüm, çünkü diğerleri yararlı bulabilir.
[GÜNCELLEME - 2]
Doğru yöntem:
Magento'yu 2.2.X'e yükselttikten sonra, bunun alanı ayarlamak için doğru yöntem olduğunu fark ettik:
Uygulamanın / kod / NameSpace / Modül / Konsol / 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
...
}
...
}
Nesne Yöneticisi'ni kullanmadığımızı ve alanın yapıcı içinde DEĞİL gerektiren işlev içinde ayarlanması gerektiğini unutmayın. Bu, bölgeyi kurmanın resmi yoludur ve tüm Magento 2 sürümleriyle kusursuz bir şekilde çalışmalıdır.
Mevcut sınıfların bir listesi aşağıdaki sınıfta mevcuttur:
Magento \ Framework \ App \ Alanı
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';
...