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.