Bu yapılandırmayı kaydederken bir şeyler ters gitti: Alan zaten ayarlandı


25

2.2.4 temiz yüklemesinde yeni bir tema uygulayamıyorum. 2.2.5'e yükseltmek sorunu çözmez.


gerçekte ne yaptığınızı benimle paylaşabilirsiniz lütfen
hweb87

Merhaba @SwapnilTatkondawar, Talimatlarınıza göre D / L yamasını aldım ... fakat bu komutu çalıştırmadan önce IDE'ye nereye yüklerim? Teşekkür ederim
rav narayan

Bu soruya bir cevap vermiyor. Yeterli üne sahip olduğunuzda , herhangi bir gönderi hakkında yorum yapabileceksiniz ; bunun yerine, askerden açıklama gerektirmeyen cevaplar sağlayın . - Şu kaynaktan
Sukumar Gorai

Mevcut bir soruyu soramazsam, kopya oluşturmamı ister misiniz?
rav narayan

Lütfen cevap olarak eklemek yerine yorum ekleyin.
Sukumar Gorai

Yanıtlar:


53

Not: Bu, Magento 2.2.4'teki bilinen bir sorundur ( GitHub konusuna bakın ) ve düzeltmenin altındaki geçici bir düzeltmedir. Magento çekirdek dosyasını doğrudan değiştirmemelisiniz (geçersiz kılmayın veya bir eklenti oluşturun)

Magento\Email\Model\AbstractTemplate.phpBu değişiklik :

public function setForcedArea($templateId)
{
    if ($this->area) {
        throw new \LogicException(__('Area is already set'));
    }
    $this->area = $this->emailConfig->getTemplateArea($templateId);
    return $this;
}

Bunun için:

public function setForcedArea($templateId)
{
    if (!isset($this->area)) {
        $this->area = $this->emailConfig->getTemplateArea($templateId);
    }
    return $this;
}

Bu sorunu çözmeli

Güncelleme : bu yamayı uygulayarak da düzeltilebilir


3
Teşekkürler! Bu benim sorunumu çözdü. Çoğaltmak için: İçerik> Tasarım> Yapılandırma> Mağaza Teması Düzeyinde temanızı "Düzenleyin". Herhangi bir değişiklik yaparsanız (bir tema uygularsanız veya bir logoyu değiştirseniz de) aşağıdaki mesaj görüntülenir: "Bu yapılandırmayı kaydederken bir şeyler ters gitti: Alan zaten [beklemede]" ayarlandı.
eskaliert

3
Çekirdek dosyada düzenlediğim gibi çalıştı. Bu belirli model dosyasını nasıl geçersiz kılacağımı, böylece herhangi bir çekirdek dosyasını düzenlemem. App klasöründe kullanmam gereken klasör yapısı nedir.
Alaksandar Jesus Gene

2
Magento 2, ne yazık ki düzeltme düzeltme yapmaz. Bununla birlikte, burada resmi bir yama yayınladılar: magento.com/tech-resources/download (MAGETWO-93036 için arama yapın). Bu düzeltme ekini aşağıdaki komut düzeltme ekini kullanarak uygulayın -p1 <m2-hotfixes / EE-MAGETWO-93036-2018-07-02-07-07-16.patch. Bahsedilen yamayı uyguladıktan sonra ve mükemmel çalışıyor.
Swapnil Tatkondawar

2
Sorun Magento2.2.6'da çözüldü
Manish Maheshwari

1
Yanıtınızı yama dosyasının bağlantısıyla güncellediğiniz için teşekkür ederiz :)
Jonathan Marzullo 8:18

2

Something went wrong while saving this configuration: Area is already setTema yapılandırması kaydedilirken sabit hata oluştu. Magento\Email\Model\AbstractTemplate.phpÖzel modülde geçersiz kılma dosyası için eklenti oluşturmak istiyorsunuz . Ve güncelleme setForcedArea()fonksiyonu.

Dosya yolu: magento / uygulama / kod / Satıcı / AlanConfigFix / registration.php

<?php
use \Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Vendor_AreaConfigFix', __DIR__);

Dosya yolu: magento / uygulama / kod / Satıcı / AreaConfigFix / etc / module.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>

Dosya yolu: magento / uygulama / kod / Satıcı / AlanConfigFix / 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>

Dosya yolu: magento / uygulama / kod / Satıcı / AreaConfigFix / Eklenti / E-posta / Model / 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;
    }
}

benim için çalışmıyor
Manjunath

0

Magento tarafından verilen yamayı yüklemek ya da doğrudan buradaki ana dosyaları değiştirmek yerine, nasıl yaptım:

"Dosya yolu: magento / uygulama / kod / Satıcı / ThemeErrorFix / registration.php"

<?php
use \Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Vendor_ThemeErrorFix', __DIR__);

"Dosya yolu: magento / uygulama / kod / Satıcı / ThemeErrorFix / etc / module.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>

"Dosya yolu: magento / uygulama / kod / Satıcı / 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>

"Dosya yolu: magento / uygulama / kod / Satıcı / ThemeErrorFix / Model / 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;
}
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.