سؤال

عندما 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 عينة وحدة الريبو من أجل وحدة الذي يوضح اعتراض.

اعتراضية هي بديل يعيد كتابة.اعتراضية الملحق ، ولكن ليس محل الأحداث والمراقبين.

آمل أن يساعد.

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