ماجنتو 2:هل يمكنك استخدام مكون إضافي من النوع `Psr\Log\LoggerInterface`؟
-
13-12-2019 - |
سؤال
لقد حصلت على di.xml الذي يبدو مثل هذا
<config>
<type name="Psr\Log\LoggerInterface">
<plugin name="namespace_modulename_plugins_psr"
type="Namespace\Modulename\Plugins\Psr"
sortOrder="10"
disabled="false"/>
</type>
</config>
ال Namespace\Modulename\Plugins\Psr
يمكن إنشاء مثيل للفئة، ولها beforeInfo
تم تعريف الطريقة
public function beforeInfo($subject)
{
var_dump(__METHOD__);
exit;
}
ومع ذلك، إذا قمت بحقن المسجل وحاولت استخدامه
/* @var $psr `Psr\Log\LoggerInterface` */
$psr->info("This is a message");
سيتم تسجيل الرسالة بنجاح، لكن النظام لا يستدعي طريقة المكون الإضافي الخاصة بي.
هل هناك شيء خاص حول Psr\Log\LoggerInterface
الذي يجعل في غير البرنامج المساعد قادرة؟إذا لم يكن الأمر كذلك، هل لدى أي شخص منهجية قوية لتصحيح مشكلات تكوين البرنامج المساعد؟
المحلول 2
وبعد قليل من البحث، اتضح Psr\Log\LoggerInterface
(والخرسانة الأساسية لها Monolog
فئة التنفيذ) يستطيع يتم توصيله.كانت المشكلة هي أنه إذا كان وضع المطور ممكّنًا، فستحتاج إلى إجراء ترجمة كاملة (انظر هذا الخطأ).جري
php bin/magento setup:di:compile
يجب أن يتم إنشاء المعترضات وتشغيل المكونات الإضافية.
نصائح أخرى
PSR\Log\LoggerInterface
ليس في وحدة الماجنتو أو مجلد الإطار.لذلك لا يتم تحليله بواسطة المترجم ولن يتم إضافته إلى وضع الإنتاج.إذا كنت تريد إضافة/تكوين سلوك فئات الجهات الخارجية، فيجب عليك استخدام المحول.