Si è verificato un errore durante il salvataggio di questa configurazione: l'area è già impostata


25

Non riesco ad applicare un nuovo tema in un'installazione pulita di 2.2.4. L'aggiornamento a 2.2.5 non risolve il problema.


potresti per favore condividere con me quello che hai effettivamente fatto
— hweb87,

Ciao @SwapnilTatkondawar, Secondo le tue istruzioni ho D / L la patch ... ma dove lo installo sul mio IDE prima di eseguire il comando? Grazie,
— rav narayan,

Questo non fornisce una risposta alla domanda. Una volta che hai una reputazione sufficiente , sarai in grado di commentare qualsiasi post ; fornire invece risposte che non richiedono chiarimenti da parte del richiedente . - Dalla recensione
— Sukumar Gorai,

Se non posso fare una domanda esistente, vorresti che io creassi un duplicato?
— rav narayan,

Aggiungi un commento invece di aggiungerlo come risposta.
— Sukumar Gorai,

Risposte:


53

Nota: questo è un problema noto in Magento 2.2.4 ( vedi il problema GitHub ) e la correzione di seguito è solo una correzione temporanea. Non è necessario modificare direttamente il file core di Magento (sovrascrivere o creare un plug-in)

Cambia in Magento\Email\Model\AbstractTemplate.phpquesto:

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

Per questo:

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

Dovrebbe risolvere il problema

Aggiornamento : può anche essere risolto applicando questa patch


3
Grazie! Questo ha risolto il mio problema. Per riprodurre: In Contenuto> Design> Configurazione> "Modifica" il tema a livello di visualizzazione dello store. Se si apportano modifiche (indipendentemente dall'applicazione di un tema o dalla modifica di un logo), viene visualizzato il seguente messaggio: "Si è verificato un errore durante il salvataggio di questa configurazione: L'area è già impostata [in attesa]".
— eskaliert,

3
Ha funzionato come ho modificato nel file core. Come sovrascrivere questo file modello specifico in modo da non modificare alcun file core. Qual è la struttura delle cartelle che devo usare nella cartella dell'app.
— Alaksandar Jesus Gene,

2
Magento 2 non fa versioni di hotfix, sfortunatamente. Tuttavia, hanno rilasciato una patch ufficiale qui: magento.com/tech-resources/download (ricerca di MAGETWO-93036). Applicare questa patch utilizzando il comando seguente patch -p1 <m2-hotfixes / EE-MAGETWO-93036-2018-07-02-07-07-16-16patch. Dopo aver applicato la patch di menzione e funziona perfettamente.
— Swapnil Tatkondawar,

2
Problema risolto in Magento2.2.6
— Manish Maheshwari,

1
Grazie per aver aggiornato la tua risposta con il link al file della patch :)
— Jonathan Marzullo,

2

Per errore risolto Something went wrong while saving this configuration: Area is already setdurante il salvataggio della configurazione del tema. Volete creare plugin per sovrascrivere Magento\Email\Model\AbstractTemplate.phpfile nel modulo personalizzato. E aggiorna la setForcedArea()funzione.

Percorso file: magento / app / code / Vendor / AreaConfigFix / registration.php

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

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

Percorso file: 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>

Percorso file: 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>

Percorso file: 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;
    }
}

non funziona per me
— Manjunath il

0

Invece di installare la patch fornita da Magento o modificare i file core direttamente qui è come l'ho fatto:

"Percorso file: magento / app / code / Vendor / ThemeErrorFix / registration.php"

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

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

"Percorso file: 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>

"Percorso file: 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>

"Percorso file: magento / app / codice / fornitore / 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;
}
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.