Terjadi kesalahan saat menyimpan konfigurasi ini: Area sudah diatur


25

Saya tidak dapat menerapkan tema baru di instalasi 2.2.4 yang bersih. Naik ke 2.2.5 tidak memperbaiki masalah.


dapat berbagi dengan saya apa yang sebenarnya telah Anda lakukan
hweb87

Halo @SwapnilTatkondawar, Sesuai instruksi Anda, saya punya D / L patch ... tapi di mana saya menginstalnya di IDE saya sebelum menjalankan perintah tersebut? Terima kasih,
rav narayan

Ini tidak memberikan jawaban untuk pertanyaan itu. Setelah memiliki reputasi yang cukup, Anda dapat mengomentari setiap pos ; alih-alih, berikan jawaban yang tidak memerlukan klarifikasi dari penanya . - Dari Ulasan
Sukumar Gorai

Jika saya tidak dapat menanyakan pertanyaan yang ada, apakah Anda ingin saya membuat duplikat?
rav narayan

Silakan tambahkan komentar alih-alih menambahkannya sebagai jawaban.
Sukumar Gorai

Jawaban:


53

Catatan: Ini adalah masalah yang diketahui di Magento 2.2.4 ( lihat masalah GitHub ) dan perbaikan di bawah ini hanyalah perbaikan temp. Anda tidak boleh secara langsung mengubah file inti Magento (menimpa atau membuat plugin)

Ubah Magento\Email\Model\AbstractTemplate.phpini:

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

Untuk ini:

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

Seharusnya memperbaiki masalah

Pembaruan : juga dapat diperbaiki dengan menerapkan Patch ini


3
Terima kasih! Ini telah memecahkan masalah saya. Untuk mereproduksi: Dalam Konten> Desain> Konfigurasi> "Edit" tema Anda di Tingkat Tampilan Toko. Jika Anda melakukan perubahan (tidak masalah jika menerapkan tema atau mengubah logo) pesan berikut muncul: "Ada yang salah saat menyimpan konfigurasi ini: Area sudah diatur [ditahan]".
eskaliert

3
Ini berfungsi ketika saya diedit dalam file inti. Cara mengganti file model khusus ini jadi saya tidak mengedit file inti apa pun. Apa struktur folder yang perlu saya gunakan di folder aplikasi.
Alaksandar Jesus Gene

2
Sayangnya, Magento 2 tidak melakukan rilis perbaikan terbaru. Namun, mereka telah merilis tambalan resmi di sini: magento.com/tech-resources/download (cari MAGETWO-93036). Terapkan tambalan ini dengan menggunakan perintah di bawah ini tambalan -p1 <m2-hotfixes / EE-MAGETWO-93036-2018-07-02-07-07-07-07-16.patch. Setelah menerapkan sebutkan patch dan berfungsi dengan baik.
Swapnil Tatkondawar

2
Masalah diselesaikan di Magento2.2.6
Manish Maheshwari

1
Terima kasih telah memperbarui jawaban Anda dengan tautan ke file tambalan :)
Jonathan Marzullo

2

Untuk kesalahan tetap Something went wrong while saving this configuration: Area is already setsaat menyimpan konfigurasi tema. Anda ingin membuat plugin untuk mengganti Magento\Email\Model\AbstractTemplate.phpfile dalam modul khusus. Dan setForcedArea()fungsi pembaruan .

Jalur file: magento / app / kode / Vendor / AreaConfigFix / registrasi.php

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

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

Jalur file: magento / app / code / Vendor / 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>

Jalur file: magento / app / code / Vendor / 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>

Jalur file: magento / app / kode / Vendor / AreaConfigFix / Plugin / Email / 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;
    }
}

tidak bekerja untuk saya
Manjunath

0

Alih-alih menginstal tambalan yang diberikan oleh magento atau mengubah file inti secara langsung di sini adalah bagaimana saya melakukannya:

"Jalur file: magento / app / kode / Vendor / ThemeErrorFix / registration.php"

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

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

"Jalur file: magento / app / kode / Vendor / 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>

"Jalur file: magento / app / kode / Vendor / 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>

"Jalur file: magento / app / kode / Vendor / 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;
}
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.