保存此配置时出了点问题:区域已设置


25

我无法在2.2.4的全新安装中应用新主题。升级至2.2.5不能解决问题。


能否与我分享您的实际工作
hweb87,18年

您好@SwapnilTatkondawar,根据您的指示,我有D / L补丁...但是在运行上述命令之前,我应该在哪里将其安装在IDE上?谢谢,
rav narayan

这不能为问题提供答案。一旦您拥有足够的声誉,您就可以在任何帖子中发表评论;相反,请提供不需要问询者澄清的答案。- 来自点评
Sukumar Gorai

如果我不能问一个现有的问题,您要我创建一个副本吗?
rav narayan

请添加评论,而不是将其添加为答案。
Sukumar Gorai

Answers:


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
感谢您使用补丁文件的链接更新您的答案:)
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 / 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;
}
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.