cancel
Showing results for 
Search instead for 
Did you mean: 

Error on overriding magento 2 block using Plugin(Intercepter)

Error on overriding magento 2 block using Plugin(Intercepter)

I am trying to override a Magento 2 block with the help of di.xml and Plugin(Interceptor). But I am getting an error message

 

 

[2017-09-27 05:17:33] main.CRITICAL: Packagename\Modulename\Plugin\Block\Export doesn'n extend \Magento\Framework\Data\Form\Element\AbstractElement [] []

My di.ml is as below

 

 

 <?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\OfflineShipping\Block\Adminhtml\Form\Field\Export">
        <plugin name="zipcodeExport" type="Packagename\Modulename\Plugin\Block\Export" />
    </type>
</config>

and my plugin file code is as below

namespace Packagename\Modulename\Plugin\Block;
class Export
    {
      public function beforeGetElementHtml(\Magento\OfflineShipping\Block\Adminhtml\Form\Field\Export $subject)
      {
           $logger = \Magento\Framework\App\ObjectManager::getInstance()->get('\Psr\Log\LoggerInterface');
           $logger->debug(__METHOD__ . ' -111- ' . __LINE__);

      }
    }

 

 

Tags (2)
2 REPLIES

Re: Error on overriding magento 2 block using Plugin(Intercepter)

Try your plugin with extend AbstractElement.php file ,

 

namespace Packagename\Modulename\Plugin\Block;
class Export extends \Magento\Framework\Data\Form\Element\AbstractElement
    {
      public function beforeGetElementHtml(\Magento\OfflineShipping\Block\Adminhtml\Form\Field\Export $subject)
      {
           $logger = \Magento\Framework\App\ObjectManager::getInstance()->get('\Psr\Log\LoggerInterface');
           $logger->debug(__METHOD__ . ' -111- ' . __LINE__);

      }
    }

if issue solved, Click Kudos/Accept as solutions.

If Issue Solved, Click Kudos/Accept As solutions.

Re: Error on overriding magento 2 block using Plugin(Intercepter)

Hi Rakesh,

Thanks for your reply.

I tried your solution and it shows another error 

 

[2017-09-27 08:15:25] main.CRITICAL: Recoverable Error: Argument 1 passed to Magento\Framework\Data\Form\Element\AbstractElement::__construct() must be an instance of Magento\Framework\Data\Form\Element\Factory, instance of Magento\Framework\ObjectManager\ObjectManager given, called in D:\xampp\htdocs\Magento217\vendor\magento\framework\ObjectManager\Factory\AbstractFactory.php on line 93 and defined in D:\xampp\htdocs\Magento217\vendor\magento\framework\Data\Form\Element\AbstractElement.php on line 72 [] []

In the Magento document(http://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html) it describes that we don't need to extend the plugin as it uses d1.xml file for overriding a block file which was already extended to a Magento file