この構成の保存中に問題が発生しました:エリアは既に設定されています


25

2.2.4のクリーンインストールで新しいテーマを適用できません。2.2.5に更新しても問題は解決しません。


あなたが実際に行ったことを私と共有してください
hweb87

こんにちは@SwapnilTatkondawar、あなたの指示に従って、私はD / Lパッチを持っています...しかし、上記のコマンドを実行する前にIDEのどこにインストールしますか?、ありがとう
ナラヤンRAV

これは質問に対する答えを提供しません。十分な評判たら、投稿コメントできるようになります。代わりに、askerからの説明を必要としない回答を提供してください。- 口コミより
スクマーGorai

既存の質問で質問できない場合、複製を作成してください。
rav narayan

回答として追加するのではなく、コメントを追加してください。
スクマーゴライ

回答:


53

注:これはMagento 2.2.4の既知の問題(GitHubの問題を参照)であり、以下の修正は単なる一時的な修正です。Magentoコアファイルを直接変更しないでください(プラグインをオーバーライドまたは作成してください)

これの変更Magento\Email\Model\AbstractTemplate.php

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

このため:

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

問題を修正する必要があります

更新:このパッチを適用することでも修正できます


3
ありがとう!これで問題が解決しました。再現するには:コンテンツ>デザイン>設定>ストアビューレベルでテーマを「編集」します。変更を行うと(テーマの適用またはロゴの変更に関係なく)、次のメッセージがポップアップ表示されます。
エスカリエット

3
コアファイルで編集したとおりに機能しました。この特定のモデルファイルをオーバーライドして、コアファイルを編集しないようにする方法。アプリフォルダーで使用する必要があるフォルダー構造は何ですか。
Alaksandarイエスジーン

2
残念ながら、Magento 2は修正プログラムのリリースを行いません。ただし、彼らはここで公式パッチをリリースしました:magento.com/tech-resources/download(MAGETWO-93036を検索)。以下のコマンドpatch -p1 <m2-hotfixes / EE-MAGETWO-93036-2018-07-02-07-07-16.patchを使用して、このパッチを適用します。メンションパッチを適用すると、完全に機能します。
Swapnil Tatkondawar

2
Magento2.2.6で解決された問題
マニッシュ

1
パッチファイルへのリンクで回答を更新していただきありがとうございます:)
ジョナサンマルズーロ

2

Something went wrong while saving this configuration: Area is already setテーマ設定の保存中のエラーを修正しました。Magento\Email\Model\AbstractTemplate.phpカスタムモジュールのオーバーライドファイル用のプラグインを作成します。そして更新setForcedArea()機能。

ファイルパス:magento / app / code / Vendor / AreaConfigFix / registration.php

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

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

ファイルパス: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>

ファイルパス: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>

ファイルパス: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;
    }
}

私のために働いていない
マンジュナス

0

magentoが提供するパッチをインストールしたり、コアファイルを直接変更したりする代わりに、次のようにします。

「ファイルパス:magento / app / code / Vendor / ThemeErrorFix / registration.php」

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

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

「ファイルパス: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>

「ファイルパス: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>

「ファイルパス: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;
}
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.