เกิดข้อผิดพลาดขณะบันทึกการกำหนดค่านี้: ตั้งค่าพื้นที่ไว้แล้ว


25

ฉันไม่สามารถใช้ชุดรูปแบบใหม่ในการติดตั้งที่สะอาด 2.2.4 2.2.5 ขึ้นไปไม่สามารถแก้ไขปัญหาได้


ได้โปรดแบ่งปันกับฉันว่าคุณทำอะไรลงไปจริงๆ
hweb87

สวัสดี @SwapnilTatkondawar ตามคำแนะนำของคุณฉันมี D / L โปรแกรมแก้ไข ... แต่ฉันจะติดตั้งบน IDE ของฉันก่อนที่จะเรียกใช้คำสั่งดังกล่าวหรือไม่ ขอบคุณ
rav narayan

สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม เมื่อคุณมีเพียงพอชื่อเสียงคุณจะสามารถที่จะแสดงความคิดเห็นในโพสต์ใด ๆ ; แทนที่จะให้คำตอบที่ไม่จำเป็นต้องชี้แจงจากผู้ถาม - จากรีวิว
Sukumar Gorai

หากฉันไม่สามารถถามคำถามที่มีอยู่คุณต้องการให้ฉันสร้างซ้ำ
rav narayan

กรุณาเพิ่มความคิดเห็นแทนการเพิ่มเป็นคำตอบ
Sukumar Gorai

คำตอบ:


53

หมายเหตุ: นี่เป็นปัญหาที่ทราบใน 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;
}

ควรแก้ไขปัญหา

อัปเดต : สามารถแก้ไขได้โดยใช้โปรแกรมปรับปรุงนี้


3
ขอบคุณ! นี่เป็นการแก้ไขปัญหาของฉัน ในการทำซ้ำ: ในเนื้อหา> ออกแบบ> การกำหนดค่า> "แก้ไข" ธีมของคุณในระดับมุมมองร้านค้า หากคุณทำการเปลี่ยนแปลงใด ๆ (ไม่ว่าจะใช้ชุดรูปแบบหรือเปลี่ยนโลโก้) ข้อความต่อไปนี้จะปรากฏขึ้น: "มีบางอย่างผิดพลาดในขณะที่บันทึกการกำหนดค่านี้: พื้นที่ถูกตั้งค่าแล้ว [พักไว้]"
eskaliert

3
มันทำงานตามที่ฉันแก้ไขในไฟล์ core วิธีการแทนที่ไฟล์โมเดล specifc นี้ดังนั้นฉันไม่แก้ไขไฟล์แกนใด ๆ โครงสร้างโฟลเดอร์ที่ฉันต้องการใช้ในโฟลเดอร์แอพคืออะไร
Alaksandar Jesus Gene

2
Magento 2 ไม่ได้ออกโปรแกรมแก้ไขด่วนขออภัย อย่างไรก็ตามพวกเขาได้เปิดตัว patch อย่างเป็นทางการแล้วที่นี่: magento.com/tech-resources/download (ค้นหา MAGETWO-93036) ใช้โปรแกรมปะแก้นี้โดยใช้คำสั่งด้านล่าง patch -p1 <m2-hotfixes / EE-MAGETWO-93036-2018-07-02-07-07-07-16.patch หลังจากใช้ปะพูดถึงและมันทำงานได้อย่างสมบูรณ์
Swapnil Tatkondawar

2
ปัญหาได้รับการแก้ไขใน Magento2.2.6
Manish Maheshwari

1
ขอขอบคุณที่อัปเดตคำตอบของคุณพร้อมลิงก์ไปยังไฟล์แพทช์ :)
Jonathan Marzullo

2

สำหรับข้อผิดพลาดคงSomething went wrong while saving this configuration: Area is already setที่ในขณะที่บันทึกการกำหนดค่าชุดรูปแบบ คุณต้องการสร้างปลั๊กอินสำหรับแทนที่Magento\Email\Model\AbstractTemplate.phpไฟล์ในโมดูลที่กำหนดเอง และปรับปรุงsetForcedArea()ฟังก์ชั่น

เส้นทางของไฟล์: magento / app / code / Vendor / AreaConfigFix / registration.php

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

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

พา ธ ไฟล์: 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>

พา ธ ไฟล์: 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>

เส้นทางของไฟล์: magento / app / code / ผู้ขาย / 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;
    }
}

ไม่ทำงานสำหรับฉัน
Manjunath

0

แทนที่จะติดตั้งแพทช์ที่ได้รับจากวีโอไอพีหรือเปลี่ยนไฟล์หลักโดยตรงที่นี่เป็นวิธีที่ฉันทำ:

"เส้นทางไฟล์: magento / app / code / ผู้ขาย / ThemeErrorFix / registration.php"

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

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

"เส้นทางไฟล์: magento / app / code / ผู้ขาย / 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>

"เส้นทางไฟล์: magento / app / code / ผู้ขาย / 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 / app / code / ผู้ขาย / 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;
}
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.