تستخدم الوحدات الثلاث الخاصة بي نفس استخدام المراقب ولكن الوحدة الثالثة الخاصة بي يجب أن تقوم بتشغيل نفس المراقب في النهاية
-
29-09-2020 - |
سؤال
كيفية ضبط ترتيب نفس المراقب في الوحدات الثلاث الخاصة بي؟
تعلن كل ثلاث وحدات لدي عن نفس المراقب.
الخاص بي أولا test1_module1
استخدام الوحدة sales_convert_quote_item_to_order_item
مراقب
بلدي الثاني test1_module2
استخدام الوحدة نفسهاsales_convert_quote_item_to_order_item
المراقب لذلك أضفت <depends><Test1_Module1/></depends>
هذا الرمز في app/etc/modules/Test1_Module2.xml
وأنا يمتد Test1_Module1_Model_Observer
فئة في ملف مراقب الوحدة الثانية
بلدي الثالث test1_module3
استخدام الوحدة sales_convert_quote_item_to_order_item
مراقب.
ووحدتي الثانية test1_module2
اختياري لذلك قد يكون موجودا أو غير موجود test1
طَرد
يجب أن تقوم الوحدة الثالثة الأخيرة بتشغيل نفس المراقب في الأخير (بعد الوحدة الأولى والثانية) ماذا أفعل؟
ملحوظة:وحدتي الثالثة test1_module3
سوف تعتمد على الوحدة الأولى test1_module1
وإذا لم تكن الوحدة الثانية موجودة، فيجب تشغيل نفس المراقب بعد الوحدة الأولى، وإذا كانت الوحدة الثانية موجودة، فيجب تشغيل مراقب الوحدة الثالثة بعد مراقب الوحدة الأولى والثانية.
المحلول
لفهم ترتيب تحميل الوحدة الذي يحدد ترتيب تنفيذ المراقب، قم بإلقاء نظرة على: https://magento.stackexchange.com/a/74862/243
لديك حالة خاصة تتمثل في أنه يجب تحميل الوحدة الثالثة الخاصة بك بعد الوحدة الثانية، ولكن العمل بدونها، لذلك لا يمكنك الاعتماد عليها.
الحل البديل التالي يجب أن يقوم بالخدعة:اكتب ملف تعريف الوحدة النمطية لـ الوحدة الثانية مثله:
<config>
<modules>
<Test1_Module2>
<active>true</active>
<codePool>local</codePool>
</Test1_Module2>
<Test1_Module3>
<depends>
<Test1_Module2 />
</depends>
</Test1_Module3>
</modules>
</config>
نظرًا لأن جميع ملفات XML موجودة في app/etc/modules
تم دمجها قبل أن يتم تقييمها، وهذا سيضيف التبعية من الوحدة 3 إلى الوحدة 2، ولكن فقط إذا تم تثبيت الوحدة 2.إذا تم تثبيت الوحدة 2، ولكن لم يتم تثبيت الوحدة 3، فلا ينبغي أن تكون هناك مشكلة لأن XML أعلاه نفسه لا ينشط الوحدة 3.
بديل بسيط وغبي: قم بتسمية الوحدات بالترتيب الأبجدي.