di.xmlで<preference>を動的に有効/無効にする方法は?


10

現在<preference/>、di.xmlファイルの1つに次のものが含まれています。

<preference for="Magento\Contact\Controller\Index\Post" type="RadTest\TestModule\Controller\Contact\Post" />

管理パネルにモジュールの有効化/無効化設定オプションがあります。<preference>カスタム構成オプションが有効に設定されている場合にのみを有効にしたい。

<preference/>モジュールの設定に応じてオーバーライドを動的に有効または無効にするにはどうすればよいですか?

回答:


13

構成設定に基づいて設定を有効または無効にすることはできません。
di.xml単なる設定です。ロジックを入れることはできませんが、他のことはできます。
あなたのクラスにあなたの設定フラグをチェックし、それに応じていくつかのアクションを実行する条件を持つことができます。少なくとも1つのメソッドをオーバーライドする必要があるため
、クラスRadTest\TestModule\Controller\Contact\Postが拡張さMagento\Contact\Controller\Index\Postれると思います。
メソッドをオーバーライドする必要があるとしましょうexecute
クラスでこれを行うことができます:

namespace RadTest\TestModule\Controller\Contact;
class Post extends \Magento\Contact\Controller\Index\Post
{
    ....
    public function execute()
    {
        if (your config setting is disabled) {
            return parent::execute();
        }
        //your custom logic here
    }
}

1
これは実際に私がやってきたことであり、それらを動的に無効にする方法があればそれは良いことだと考えていました。今はできません。どうもありがとう!:)
キセノン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.