Đã xảy ra lỗi khi lưu cấu hình này: Khu vực đã được đặt


25

Tôi không thể áp dụng một chủ đề mới trong bản cài đặt sạch 2.2.4. Lên đến 2.2.5 không khắc phục được sự cố.


có thể vui lòng chia sẻ với tôi những gì bạn đã thực sự làm
hweb87

Xin chào @SwapnilTatkondawar, Theo hướng dẫn của bạn, tôi có bản vá D / L ... nhưng tôi sẽ cài đặt nó ở đâu trên IDE trước khi chạy lệnh đã nói? Cảm ơn bạn,
rav naraya

Điều này không cung cấp một câu trả lời cho câu hỏi. Một khi bạn có đủ danh tiếng, bạn sẽ có thể nhận xét về bất kỳ bài đăng nào ; thay vào đó, cung cấp câu trả lời không yêu cầu làm rõ từ người hỏi . - Từ đánh giá
Sukumar Gorai

Nếu tôi không thể hỏi một câu hỏi hiện tại, bạn có muốn tôi tạo một bản sao không?
rav naraya

Vui lòng thêm nhận xét thay vì thêm nó như một câu trả lời.
Sukumar Gorai

Câu trả lời:


53

Lưu ý: Đây là sự cố đã biết trong Magento 2.2.4 ( xem sự cố GitHub ) và cách khắc phục bên dưới chỉ là cách khắc phục tạm thời. Bạn không nên trực tiếp thay đổi tệp lõi Magento (ghi đè hoặc tạo plugin)

Thay đổi trong Magento\Email\Model\AbstractTemplate.phpnày:

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

Đối với điều này:

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

Nó sẽ khắc phục vấn đề

Cập nhật : cũng có thể được sửa bằng cách áp dụng điều này


3
Cảm ơn! Điều này đã giải quyết vấn đề của tôi. Để tái tạo: Trong Nội dung> Thiết kế> Cấu hình> "Chỉnh sửa" chủ đề của bạn ở Cấp độ cửa hàng. Nếu bạn thực hiện bất kỳ thay đổi nào (bất kể là áp dụng chủ đề hay thay đổi logo), thông báo sau sẽ bật lên: "Đã xảy ra lỗi khi lưu cấu hình này: Khu vực đã được đặt [tạm dừng]".
eskaliert

3
Nó làm việc như tôi đã chỉnh sửa trong tập tin cốt lõi. Làm cách nào để ghi đè tệp mô hình cụ thể này để tôi không chỉnh sửa bất kỳ tệp lõi nào. Cấu trúc thư mục tôi cần sử dụng trong thư mục ứng dụng là gì.
Alaksandar Jesus Gene

2
Thật không may, Magento 2 không phát hành hotfix. Tuy nhiên, họ đã phát hành một bản vá chính thức tại đây: magento.com/tech-resource/doad (tìm kiếm MAGETWO-93036). Áp dụng bản vá này bằng cách sử dụng lệnh patch bên dưới -p1 <m2-hotfix / EE-MAGETWO-93036-2018-07-02-07-07-16.patch. Sau khi áp dụng bản vá đề cập và nó hoạt động hoàn hảo.
Swapnil Tatkondawar

2
Vấn đề được giải quyết trong Magento2.2.6
Manish Maheshwari

1
Cảm ơn bạn đã cập nhật câu trả lời của bạn với liên kết đến tệp vá :)
Jonathan Marzullo

2

Đối với lỗi cố định Something went wrong while saving this configuration: Area is already settrong khi lưu cấu hình chủ đề. Bạn muốn tạo plugin cho Magento\Email\Model\AbstractTemplate.phptập tin ghi đè trong mô-đun tùy chỉnh. Và cập nhật setForcedArea()chức năng.

Đường dẫn tệp: magento / app / code / Vendor / AreaConfigFix / register.php

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

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

Đường dẫn tệp: 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>

Đường dẫn tệp: 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>

Đường dẫn tệp: magento / app / code / 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;
    }
}

không làm việc cho tôi
Manjunath

0

Thay vì cài đặt bản vá được cung cấp bởi magento hoặc thay đổi các tệp cốt lõi trực tiếp ở đây là cách tôi đã làm:

"Đường dẫn tệp: magento / ứng dụng / mã / Nhà cung cấp / ThemeErrorFix / đăng ký.php"

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

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

"Đường dẫn tệp: magento / app / code / 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>

"Đường dẫn tệp: magento / app / code / 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>

"Đường dẫn tệp: magento / ứng dụng / mã / Nhà cung cấp / 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;
}
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.