Pergunta

Quando eu overrided ficheiro de controlador de catálogo do produto e/ou executou este comando:

php bin/mangento de instalação:di:compilar

E, em seguida, esse arquivo "Interceptor.php" foi gerado no magento_root\var\generation\myPool\myModule\Controller\Adminhtml\Product\Initialization\Helper\Interceptor.php

Qualquer pessoa, você sabe?O que é este arquivo?

Foi útil?

Solução

Magento 2 sistema de plugin com base no Interceptor padrão.Chamadas para quase qualquer módulo pode ser interceptadas e alteradas.Grande melhoria sobre a reconfiguração do padrão no Magento 1, então, obviamente, - não mais de reconfiguração de conflito!

Por exemplo:

DI.xml

<config>
    <type name="{ObservedType}">
        <plugin name="{pluginName}" type="{PluginClassName}" sortOrder="1" disabled="false" />
    </type>
</config>

Ordem de classificação define a ordem de se vários plugins interceptar o mesmo item.É possível interceptar antes de, depois de e em torno de uma função/método.

"Antes do" interceptor

class Plugin
{
    public function beforeSetName(\Magento\Catalog\Model\Product $subject, $name)
    {
        return array('(' . $name . ')');
    }
}

'Depois de' interceptor

class Plugin
{
    public function afterGetName(\Magento\Catalog\Model\Product $subject, $name)
    {
        return array('|' . $name . '|');
    }
}

'Cerca de' interceptor

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;
    }
}

O Checkout Magento 2 exemplo de módulo de recompra para um módulo que demonstra a interceptação.

Interceptores são substituto para reescreve.Interceptores complementar, mas não substituir eventos e observadores.

Espero que ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top