Ich versuche diese Änderung zu erreichen. Ich habe überall gesucht und nichts gefunden. Ist es möglich, das Preisformat neu zu ordnen?
Ich versuche diese Änderung zu erreichen. Ich habe überall gesucht und nichts gefunden. Ist es möglich, das Preisformat neu zu ordnen?
Antworten:
Wir sollten event verwenden currency_display_options_forming
:
app / code / Vendor / Module / etc / events.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="currency_display_options_forming">
<observer name="localize_currencysymbol_currency_display_options" instance="Vendor\Module\Observer\ModifyCurrencyOptions" />
</event>
</config>
app / code / Vendor / Module / Observer / ModifyCurrencyOptions.php
<?php
namespace Vendor\Module\Observer;
use Magento\Framework\Locale\Currency;
use Magento\Framework\Event\ObserverInterface;
class ModifyCurrencyOptions implements ObserverInterface
{
/**
* @var \Magento\CurrencySymbol\Model\System\CurrencysymbolFactory
*/
protected $symbolFactory;
const RIGHT = 16;
/**
* @param \Magento\CurrencySymbol\Model\System\CurrencysymbolFactory $symbolFactory
*/
public function __construct(\Magento\CurrencySymbol\Model\System\CurrencysymbolFactory $symbolFactory)
{
$this->symbolFactory = $symbolFactory;
}
/**
* Generate options for currency displaying with custom currency symbol
*
* @param \Magento\Framework\Event\Observer $observer
* @return $this
*/
public function execute(\Magento\Framework\Event\Observer $observer)
{
$baseCode = $observer->getEvent()->getBaseCode();
$currencyOptions = $observer->getEvent()->getCurrencyOptions();
$originalOptions = $currencyOptions->getData();
$currencyOptions->setData($this->getCurrencyOptions($baseCode, $originalOptions));
return $this;
}
/**
* Get currency display options
*
* @param string $baseCode
* @param array $originalOptions
* @return array
*/
protected function getCurrencyOptions($baseCode, $originalOptions)
{
$currencyOptions = [];
if ($baseCode == 'RON') {
$currencyOptions['position'] = self::RIGHT; // switch currency symbol position to the RIGHT
}
return array_merge($originalOptions, $currencyOptions);
}
}
Schauen Sie sich hier das Vendor / Magento / Modul-Währungssymbol und ein gutes Beispielmodul an .
<currencyFormat>
Eine Zeile direkt darunter finden Sie die <pattern>
Ändern Sie die Seite des seltsamen Symbols und lassen Sie es so:
Vor
<currencyformatlength>
<currencyformat>
<pattern>¤ #,##0.00</pattern>
</currencyformat>
</currencyformatlength>
Nach
<currencyformatlength>
<currencyformat>
<pattern>#,##0.00 ¤</pattern>
</currencyformat>
</currencyformatlength>