이 구성을 저장하는 동안 문제가 발생했습니다 : 영역이 이미 설정되었습니다


25

2.2.4를 새로 설치하면 새 테마를 적용 할 수 없습니다. 2.2.5로 업데이트해도 문제가 해결되지 않습니다.


당신이 실제로 한 일을 나와 함께 나눌 수
있습니까

안녕하세요 @SwapnilTatkondawar, 귀하의 지침에 따라 D / L 패치가 있습니다 ...하지만 해당 명령을 실행하기 전에 IDE에서 어디에 설치해야합니까? 감사합니다
rav narayan

이것은 질문에 대한 답변을 제공하지 않습니다. 평판 이 충분 하면 모든 게시물댓글 수 있습니다 . 대신 asker의 설명이 필요없는 답변을 제공하십시오 . - 검토에서
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
핵심 파일에서 편집 한대로 작동했습니다. 이 특정 모델 파일을 무시하여 코어 파일을 편집하지 않는 방법. 앱 폴더에서 사용해야하는 폴더 구조는 무엇입니까?
Alaksandar 예수 유전자

2
Magento 2는 불행히도 핫픽스 릴리스를 수행하지 않습니다. 그러나 magento.com/tech-resources/download(MAGETWO-93036 검색) 에서 공식 패치를 발표했습니다 . 아래 명령 patch -p1 <m2-hotfixes / EE-MAGETWO-93036-2018-07-02-07-07-16.patch를 사용하여이 패치를 적용하십시오. 언급 패치를 적용하면 완벽하게 작동합니다.
Swapnil Tatkondawar

2
Magento2.2.6에서 해결 된 문제
Manish Maheshwari

1
: 패치 파일에 대한 링크와 답을 갱신 주셔서 감사합니다
조나단 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 / 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;
    }
}

나를 위해 작동하지 않음
Manjunath

0

magento가 제공 한 패치를 설치하거나 코어 파일을 직접 변경하는 대신 여기에 내가 한 방법이 있습니다.

"파일 경로 : magento / app / code / Vendor / ThemeErrorFix / registration.php"

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

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

"파일 경로 : 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>

"파일 경로 : 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>

"파일 경로 : magento / app / code / 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;
}
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.