วิธีเปิด / ปิดการใช้งาน <preference> แบบไดนามิกใน di.xml


10

ขณะนี้ฉันมีสิ่งต่อไปนี้<preference/>ในไฟล์ di.xml ของฉัน:

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

ฉันมีตัวเลือกเปิด / ปิดการใช้งานการกำหนดค่าสำหรับโมดูลของฉันในแผงการดูแลระบบ ฉันต้องการ<preference>ให้เปิดใช้งานเมื่อตั้งค่าตัวเลือกการกำหนดค่าแบบกำหนดเองเป็นเปิดใช้งานเท่านั้น

ฉันจะเปิดใช้งานและปิดใช้งานการ<preference/>แทนที่แบบไดนามิกตามการกำหนดค่าของโมดูลที่ตั้งไว้ได้อย่างไร

คำตอบ:


13

คุณไม่สามารถเปิดใช้งานและ / หรือปิดใช้งานการตั้งค่าตามการตั้งค่า
di.xmlเป็นเพียงการกำหนดค่า คุณไม่มีตรรกะในนั้น แต่คุณสามารถทำอย่างอื่นได้
คุณสามารถมีเงื่อนไขในชั้นเรียนที่จะตรวจสอบการตั้งค่าสถานะของคุณและทำการกระทำบางอย่างตามนั้น
ฉันคิดว่าชั้นเรียนของคุณ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.