Une erreur s'est produite lors de l'enregistrement de cette configuration: la zone est déjà définie


25

Je ne parviens pas à appliquer un nouveau thème dans une nouvelle installation de 2.2.4. La mise à jour vers 2.2.5 ne résout pas le problème.


pourriez-vous s'il vous plaît partager avec moi ce que vous avez réellement fait
hweb87

Bonjour @SwapnilTatkondawar, Selon vos instructions, j'ai D / L le patch ... mais où dois-je l'installer sur mon IDE avant d'exécuter ladite commande? Merci,
rav narayan

Cela ne fournit pas de réponse à la question. Une fois que vous avez une réputation suffisante, vous pourrez commenter n'importe quel message ; fournissez plutôt des réponses qui ne nécessitent pas de clarification de la part du demandeur . - De l'avis
Sukumar Gorai

Si je ne peux pas poser de question sur une question existante, aimeriez-vous que je crée un doublon?
rav narayan

Veuillez ajouter un commentaire au lieu de l'ajouter comme réponse.
Sukumar Gorai

Réponses:


53

Remarque: Il s'agit d'un problème connu dans Magento 2.2.4 ( voir problème GitHub ) et le correctif ci-dessous n'est qu'un correctif temporaire. Vous ne devez pas modifier directement le fichier principal de Magento (remplacer ou créer un plugin)

Changement dans Magento\Email\Model\AbstractTemplate.phpceci:

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

Pour ça:

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

Cela devrait résoudre le problème

Mise à jour : peut également être corrigée en appliquant ce patch


3
Merci! Cela a résolu mon problème. Pour reproduire: Dans Contenu> Conception> Configuration> "Modifier" votre thème au niveau de la vue du magasin. Si vous apportez des modifications (que vous appliquiez un thème ou changiez un logo), le message suivant apparaît: "Quelque chose s'est mal passé lors de l'enregistrement de cette configuration: la zone est déjà définie [en attente]".
eskaliert

3
Cela a fonctionné comme je l'ai édité dans le fichier core. Comment remplacer ce fichier de modèle spécifique pour que je ne modifie aucun fichier principal. Quelle est la structure de dossiers que je dois utiliser dans le dossier d'application.
Alaksandar Jesus Gene

2
Magento 2 ne fait malheureusement pas de versions de correctifs. Cependant, ils ont publié un correctif officiel ici: magento.com/tech-resources/download (recherchez MAGETWO-93036). Appliquez ce patch en utilisant la commande ci-dessous patch -p1 <m2-hotfixes / EE-MAGETWO-93036-2018-07-02-07-07-16.patch. Après avoir appliqué le patch de mention et cela fonctionne parfaitement.
Swapnil Tatkondawar

2
Problème résolu dans Magento2.2.6
Manish Maheshwari

1
Merci d'avoir mis à jour votre réponse avec le lien vers le fichier de patch :)
Jonathan Marzullo

2

Pour une erreur fixe Something went wrong while saving this configuration: Area is already setlors de l'enregistrement de la configuration du thème. Vous voulez créer un plugin pour remplacer le Magento\Email\Model\AbstractTemplate.phpfichier dans le module personnalisé. Et setForcedArea()fonction de mise à jour .

Chemin du fichier: magento / app / code / Vendor / AreaConfigFix / registration.php

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

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

Chemin du fichier: 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>

Chemin du fichier: 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>

Chemin du fichier: 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;
    }
}

ne travaille pas pour moi
Manjunath

0

Au lieu d'installer le patch fourni par magento ou de changer directement les fichiers de base, voici comment je l'ai fait:

"Chemin du fichier: magento / app / code / Vendor / ThemeErrorFix / registration.php"

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

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

"Chemin du fichier: 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>

"Chemin du fichier: 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>

"Chemin du fichier: 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;
}
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.