Ocorreu um erro ao salvar esta configuração: a área já está definida

25

Não consigo aplicar um novo tema em uma instalação limpa do 2.2.4. A atualização para 2.2.5 não resolve o problema.

Ankush Verma
fonte
poderia por favor, compartilhe comigo o que você realmente feito
hweb87
Olá @SwapnilTatkondawar, de acordo com suas instruções, tenho D / L o patch ... mas onde instalo no meu IDE antes de executar o comando? Obrigado,
rav narayan
Isso não fornece uma resposta para a pergunta. Depois de ter reputação suficiente, você poderá comentar qualquer postagem ; em vez disso, forneça respostas que não exijam esclarecimentos do solicitante . - Da avaliação
Sukumar Gorai
Se eu não puder fazer uma pergunta existente, gostaria que eu criasse uma duplicata?
rav narayan
Adicione um comentário em vez de adicioná-lo como resposta.
Sukumar Gorai

Respostas:

53

Nota: Este é um problema conhecido no Magento 2.2.4 ( consulte o GitHub ) e a correção abaixo é apenas uma correção temporária. Você não deve alterar diretamente o arquivo principal do Magento (substituir ou criar um plugin)

Mudança Magento\Email\Model\AbstractTemplate.phpnisso:

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

Por esta:

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

Deve corrigir o problema

Atualização : também pode ser corrigida aplicando este patch

Vishwas Bhatnagar
fonte
3
Obrigado! Isso resolveu meu problema. Para reproduzir: Em Conteúdo> Design> Configuração> "Editar" seu tema no nível de visualização da loja. Se você fizer alguma alteração (independentemente de aplicar um tema ou alterar um logotipo), a seguinte mensagem será exibida: "Ocorreu um erro ao salvar esta configuração: a área já está definida [em espera]".
Eskaliert # 13/18
3
Funcionou como editei no arquivo principal. Como substituir esse arquivo de modelo específico para não editar nenhum arquivo principal. Qual é a estrutura de pastas que eu preciso usar na pasta de aplicativos.
Alaksandar Jesus Gene
2
Infelizmente, o Magento 2 não faz lançamentos de hotfix. No entanto, eles lançaram um patch oficial por aqui: magento.com/tech-resources/download (procure por MAGETWO-93036). Aplique esse patch usando o comando abaixo, patch -p1 <m2-hotfixes / EE-MAGETWO-93036-2018-07-02-07-07-16.patch. Depois de aplicar o patch de menção e ele funciona perfeitamente.
Swapnil Tatkondawar 28/08
2
Problema resolvido no Magento2.2.6
Manish Maheshwari
11
Obrigado por atualizar sua resposta com o link para o arquivo de correção :)
Jonathan Marzullo
2

Para erro fixo Something went wrong while saving this configuration: Area is already setao salvar a configuração do tema. Você deseja criar um plug-in para substituir o Magento\Email\Model\AbstractTemplate.phparquivo no módulo personalizado. E setForcedArea()função de atualização .

Caminho do arquivo: magento / app / code / Vendor / AreaConfigFix / registration.php

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

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

Caminho do arquivo: 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>

Caminho do arquivo: 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>

Caminho do arquivo: 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;
    }
}
Kirti Nariya
fonte
não está trabalhando para mim
Manjunath 22/10
0

Em vez de instalar o patch fornecido pelo magento ou alterar diretamente os arquivos principais, aqui está como eu o fiz:

"Caminho do arquivo: magento / app / code / Vendor / ThemeErrorFix / registration.php"

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

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

"Caminho do arquivo: 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>

"Caminho do arquivo: 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>

"Caminho do arquivo: 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;
}
}
ishu
fonte