الماجنتو 2 - ما هو الملف Interceptor.php?
-
29-09-2020 - |
سؤال
عندما overrided ملف تحكم من كتالوج/المنتج وركض هذا الأمر:
php بن/mangento الإعداد:دي:ترجمة
ثم هذا الملف "Interceptor.php" ولدت في magento_root\var\generation\myPool\myModule\Controller\Adminhtml\Product\Initialization\Helper\Interceptor.php
أي شخص, هل تعلم ؟ ما هو هذا الملف ؟
المحلول
الماجنتو المساعد 2 نظام يقوم على مجاراة النمط.يدعو إلى ما يقرب من أي وحدة يمكن اعتراضها و تغييرها.تحسنا كتابة نمط في الماجنتو 1 ، لذا من الواضح - لا مزيد من كتابة الصراع!
على سبيل المثال:
DI.xml
<config>
<type name="{ObservedType}">
<plugin name="{pluginName}" type="{PluginClassName}" sortOrder="1" disabled="false" />
</type>
</config>
ترتيب يحدد النظام إذا كان العديد من الإضافات اعتراض نفس البند.فمن الممكن أن اعتراض قبل, بعد و حول وظيفة/طريقة.
"قبل" اعتراضية
class Plugin
{
public function beforeSetName(\Magento\Catalog\Model\Product $subject, $name)
{
return array('(' . $name . ')');
}
}
'بعد' اعتراضية
class Plugin
{
public function afterGetName(\Magento\Catalog\Model\Product $subject, $name)
{
return array('|' . $name . '|');
}
}
'حول' اعتراضية
class Plugin
{
public function aroundSave(\Magento\Catalog\Model\Product $subject, \Closure $proceed, $name)
{
$this->doSomethingBeforeProductIsSaved();
$returnValue = $proceed($name);
if ($returnValue) {
$this->postProductToFacebook($name);
}
return $returnValue;
}
}
الخروج الماجنتو 2 عينة وحدة الريبو من أجل وحدة الذي يوضح اعتراض.
اعتراضية هي بديل يعيد كتابة.اعتراضية الملحق ، ولكن ليس محل الأحداث والمراقبين.
آمل أن يساعد.