मैं 2.2.4 की साफ स्थापना में एक नया विषय लागू करने में असमर्थ हूं। 2.2.5 तक की समस्या को ठीक नहीं करता है।
मैं 2.2.4 की साफ स्थापना में एक नया विषय लागू करने में असमर्थ हूं। 2.2.5 तक की समस्या को ठीक नहीं करता है।
जवाबों:
नोट: यह Magento 2.2.4 में एक ज्ञात मुद्दा है ( GitHub मुद्दा देखें ) और नीचे तय केवल एक अस्थायी सुधार है। आपको सीधे Magento कोर फ़ाइल नहीं बदलनी चाहिए (ओवरराइड या एक प्लगइन बनाना)
इसमें बदलाव Magento\Email\Model\AbstractTemplate.php
करें:
public function setForcedArea($templateId)
{
if ($this->area) {
throw new \LogicException(__('Area is already set'));
}
$this->area = $this->emailConfig->getTemplateArea($templateId);
return $this;
}
इसके लिए:
public function setForcedArea($templateId)
{
if (!isset($this->area)) {
$this->area = $this->emailConfig->getTemplateArea($templateId);
}
return $this;
}
यह समस्या को ठीक करना चाहिए
अद्यतन : इस पैच को लागू करके भी तय किया जा सकता है
Something went wrong while saving this configuration: Area is already set
थीम कॉन्फ़िगरेशन को सहेजते समय निश्चित त्रुटि के लिए । आप Magento\Email\Model\AbstractTemplate.php
कस्टम मॉड्यूल में ओवरराइड फ़ाइल के लिए प्लगइन बनाना चाहते हैं । और setForcedArea()
फ़ंक्शन को अपडेट करें।
फ़ाइल पथ: Magento / ऐप / कोड / विक्रेता / AreaConfigFix / registration.php
<?php
use \Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Vendor_AreaConfigFix', __DIR__);
फ़ाइल पथ: Magento / ऐप / कोड / विक्रेता / AreaConfigFix / etc / मॉड्यूल.xml
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor_AreaConfigFix" setup_version="1.0.0">
<sequence>
<module name="Magento_Email"/>
</sequence>
</module>
</config>
फ़ाइल पथ: Magento / ऐप / कोड / विक्रेता / AreaConfigFix / etc / di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Email\Model\AbstractTemplate">
<plugin name="email_setforced_area" type="Vendor\AreaConfigFix\Plugin\Email\Model\AbstractTemplate" />
</type>
</config>
फ़ाइल पथ: Magento / एप्लिकेशन / कोड / विक्रेता / AreaConfigFix / प्लगइन / ईमेल / मॉडल / AbstractTemplate.php
<?php
namespace Vendor\AreaConfigFix\Plugin\Email\Model;
class AbstractTemplate
{
private $emailConfig;
public function __construct(\Magento\Email\Model\Template\Config $emailConfig)
{
$this->emailConfig = $emailConfig;
}
public function aroundSetForcedArea(\Magento\Email\Model\AbstractTemplate $subject, \Closure $proceed, $templateId)
{
if (!isset($this->area)) {
$this->area = $this->emailConfig->getTemplateArea($templateId);
}
return $this;
}
}
Magento द्वारा दिए गए पैच को स्थापित करने या सीधे कोर फ़ाइलों को बदलने के बजाय यहां बताया गया है कि मैंने यह कैसे किया:
"फ़ाइल पथ: Magento / ऐप / कोड / विक्रेता / ThemeErrorFix / registration.php"
<?php
use \Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Vendor_ThemeErrorFix', __DIR__);
"फ़ाइल पथ: Magento / ऐप / कोड / विक्रेता / ThemeErrorFix / etc / मॉड्यूल.xml"
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor_ThemeErrorFix" setup_version="1.0.0">
<sequence>
<module name="Magento_Email"/>
</sequence>
</module>
</config>
"फ़ाइल पथ: Magento / ऐप / कोड / विक्रेता / ThemeErrorFix / etc / di.xml"
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Email\Model\Template">
type="email_setforced_area" type="Vendor\ThemeErrorFix\Model\Template" />
</config>
"फ़ाइल पथ: Magento / ऐप / कोड / विक्रेता / ThemeErrorFix / मॉडल / Template.php"
<?php
namespace Vendor\ThemeErrorFix\Model;
use Magento\Email\Model\Template as coreTemplate;
class Template extends coreTemplate
{
public function setForcedArea($templateId)
{
if (!isset($this->area)) {
$this->area = $this->emailConfig->getTemplateArea($templateId);
}
return $this;
}
}