Hi guys,
I'm pretty new to Magento, so excuse me if I may be asking something obvious.
I'm trying to override function formatTxt() of class Magento\Directory\Model\Currency
I did a little search and I don't know if I've got the best way for it, so please guide me if I've chosen a wrong path:
I think doing it through plugins is the right way.
The problem is that when I render a search-result page, no result is being rendered. When I looked inside 'var/log/system.log', the following error is being logged:
[2016-09-17 16:47:49] main.CRITICAL: Plugin class Amaj\CorePlugin\Model\Currency\Plugin doesn't exist [] []
Please help me to find the problem.
Thank you for your helps in advance
-------------------------------------- The files ---------------------------------------------------------
I created a module with the following structure:
I have defined the files like the following:
registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Amaj_CorePlugin',
__DIR__
);
module.xml
<?xml version="1.0"?>
<!--
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Amaj_CorePlugin" setup_version="1.0.0">
<sequence>
<module name="Magento_Directory"/>
</sequence>
</module>
</config>
InstallSchema.php
<?php
namespace Amaj\CorePlugin\Setup;
use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
/**
* @codeCoverageIgnore
*/
class InstallSchema implements InstallSchemaInterface
{
/**
* {@inheritdoc}
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
$setup->endSetup();
}
}
di.xml
<?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\Directory\Model\Currency">
<plugin name="amaj-core-plugin-currency" type="Amaj\CorePlugin\Model\Currency\Plugin" sortOrder="10" disabled="false" />
</type>
<!--preference for="Magento\Directory\Model\Currency" type="Amaj\CorePlugin\Model\CurrencyPlugin" /-->
</config>
Plugin.php
<?php
namespace Amaj\CorePlugin\Model\Currency;
class Plugin
{
protected $logger;
public function __construct(\Psr\Log\LoggerInterface $logger) {
$this->logger = $logger;
parent::__construct();
}
/**
* @param float $price
* @param array $options
* @return string
*/
public function aroundFormatTxt(
$subject,
\Closure $proceed,
$price,
$options = []
)
{
$logger->info('Amaj aroundFormatTxt');
return '2';
}
}