ماجنتو 2:هل يمكنك استخدام مكون إضافي من النوع `Psr\Log\LoggerInterface`؟

magento.stackexchange https://magento.stackexchange.com//questions/93046

سؤال

لقد حصلت على 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 ليس في وحدة الماجنتو أو مجلد الإطار.لذلك لا يتم تحليله بواسطة المترجم ولن يتم إضافته إلى وضع الإنتاج.إذا كنت تريد إضافة/تكوين سلوك فئات الجهات الخارجية، فيجب عليك استخدام المحول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top