如何在di.xml中动态启用/禁用<preference>?


10

<preference/>我的di.xml文件之一当前具有以下内容:

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

我在管理面板中为模块启用/禁用了配置选项。我只希望<preference>在我的自定义配置选项设置为启用时启用。

如何<preference/>根据设置的模块配置动态启用和禁用覆盖?

Answers:


13

您不能基于配置设置启用和/或禁用首选项。
di.xml只是配置。您不能拥有逻辑,但是可以做其他事情。
您可以在您的类中有一个条件,该条件检查您的config标志并相应地执行一些操作。
我假设您的类已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
这实际上是我一直在做的事情,并一直认为如果有一种动态禁用它们的方法会很好。现在我知道我们做不到。非常感谢!:)
氙气
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.