Währungen in Shopware 5 mit Zend_Currency formatieren

Müssen Preise direkt in einer Klasse und nicht im Template formatiert werden, so kann der Zend_Currency Service genützt werden.

Manchmal ist es nötig, dass Preise direkt in der Methode einer Klasse und nicht erst im Template – in dem die Hilfsmethode „currency“ zur Verfügung steht – formatiert werden. Das kann zum Beispiel in einem Plugin für den Export von Produktdaten der Fall sein.

Preise werden vom PriceCalculationService immer als Float geliefert. Um diese entsprechend des jeweiligen Shop-Contexts zu formatieren (Währungssymbol, Komma-Zeichen, Tausender-Trennzeichen), kann der Service „currency“ (der auf der Zend_Currency Klasse basiert) genützt werden.

Folgender Codeschnipsel zeigt die Anwendung:

<!-- Beispiel: Injizieren des currency Services in der services.xml -->
<service id="demo.data_service" class="Demo\Services\DataService" public="true">
        <argument type="service" id="models" />
        <argument type="service" id="shopware_storefront.product_service" />
        <argument type="service" id="router" />
        <argument type="service" id="currency" />
 </service>
// Verwendung des Currency Service in einer Methode des DataService

/**
 * DataService constructor.
 * @param ModelManager $modelManager
 * @param ProductServiceInterface $productService
 * @param RouterInterface $router
 * @param \Zend_Currency $currency
 */
public function __construct(
    ModelManager $modelManager,
    ProductServiceInterface $productService,
    RouterInterface $router,
    \Zend_Currency $currency) {

    $this->modelManager = $modelManager;
    $this->productService = $productService;
    $this->router = $router;
    $this->currency = $currency;

}

/**
 * Returns a formatted price
 * @param $price
 * @return string
 */
public function getFormattedPrice($price) {
    return html_entity_decode($this->currency->toCurrency($price));
}
Zusammenfassung
Währungen in Shopware 5 mit Zend_Currency formatieren
Titel
Währungen in Shopware 5 mit Zend_Currency formatieren
Beschreibung
Müssen Preise direkt in einer Klasse und nicht im Template formatiert werden, so kann der Zend_Currency Service genützt werden.
Autor
Publisher
synonymous.rocks
Logo

Kommentar verfassen

Folge mir auf Twitter

Hol Dir kostenlos Tipps und Tricks zu Shopware, E-Commerce und andere Open-Source Produkte.

Folge @synonymousrocks