Algo salió mal al guardar esta configuración: el área ya está configurada


25

No puedo aplicar un nuevo tema en una instalación limpia de 2.2.4. La actualización a 2.2.5 no soluciona el problema.


podría amable de decirme qué ha hecho realidad
hweb87

Hola @SwapnilTatkondawar, Según sus instrucciones, tengo D / L el parche ... pero ¿dónde lo instalo en mi IDE antes de ejecutar dicho comando? Gracias,
Rav Narayan

Esto no proporciona una respuesta a la pregunta. Una vez que tenga suficiente reputación , podrá comentar cualquier publicación ; en su lugar, proporcione respuestas que no requieran una aclaración del autor de la pregunta . - De la opinión
Sukumar Gorai

Si no puedo hacer una pregunta existente, ¿desea que cree un duplicado?
Rav Narayan

Agregue un comentario en lugar de agregarlo como respuesta.
Sukumar Gorai

Respuestas:


53

Nota: Este es un problema conocido en Magento 2.2.4 ( consulte el problema de GitHub ) y la solución a continuación es solo una solución temporal. No debe cambiar directamente el archivo principal de Magento (anular o crear un complemento)

Cambio en Magento\Email\Model\AbstractTemplate.phpesto:

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

Para esto:

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

Debería solucionar el problema

Actualización : también se puede solucionar aplicando este parche


3
¡Gracias! Esto ha resuelto mi problema. Para reproducir: En Contenido> Diseño> Configuración> "Editar" su tema en el nivel de vista de la tienda. Si realiza algún cambio (no importa si aplica un tema o cambia un logotipo) aparece el siguiente mensaje: "Algo salió mal al guardar esta configuración: el área ya está configurada [en espera]".
eskaliert

3
Funcionó como lo edité en el archivo central. Cómo anular este archivo de modelo específico para que no edite ningún archivo central. ¿Cuál es la estructura de carpetas que necesito usar en la carpeta de la aplicación?
Alaksandar Jesus Gene

2
Magento 2 no hace lanzamientos de revisiones, desafortunadamente. Sin embargo, han lanzado un parche oficial aquí: magento.com/tech-resources/download (busque MAGETWO-93036). Aplique este parche utilizando el siguiente comando patch -p1 <m2-hotfixes / EE-MAGETWO-93036-2018-07-02-07-07-16.patch. Después de aplicar mencionar parche y funciona perfectamente.
Swapnil Tatkondawar

2
Problema resuelto en Magento2.2.6
Manish Maheshwari el

1
Gracias por actualizar su respuesta con el enlace al archivo de parche :)
Jonathan Marzullo

2

Para error fijo Something went wrong while saving this configuration: Area is already setal guardar la configuración del tema. Desea crear un complemento para anular el Magento\Email\Model\AbstractTemplate.phparchivo en el módulo personalizado. Y actualizar la setForcedArea()función.

Ruta del archivo: magento / app / code / Vendor / AreaConfigFix / registration.php

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

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

Ruta del archivo: 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>

Ruta del archivo: 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>

Ruta del archivo: 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;
    }
}

no funciona para mí
Manjunath

0

En lugar de instalar el parche proporcionado por magento o cambiar los archivos principales directamente aquí, así es como lo hice:

"Ruta del archivo: magento / app / code / Vendor / ThemeErrorFix / Registration.php"

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

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

"Ruta del archivo: 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>

"Ruta del archivo: 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>

"Ruta del archivo: 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;
}
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.