2016-10-25 4 views
1

Könnten Sie mir bitte bei der Formatierung von Zahlen im Laravel Blade basierend auf der Modellwährung helfen? Der Wert wird gespeichert als Doppel- und Währung als char (3) 'usd', 'eur', 'czk', 'huf' ...Währungsformatierung in Laravel

Die Projekte hat in bestimmten Währung Format angezeigt werden:

| 1 | project A | $1,250.00 | 
| 2 | project B | €6,000.00 | 
| 3 | project C | 1,250.00CZK | 

PHP money_format verwendet Gebietsschema, wo ich projektspezifische Währung in jeder Zeile oder jeder Projektseite verwenden möchte.

+0

Bitte klären Sie Ihr spezifisches Problem oder fügen Sie zusätzliche Details hinzu, um genau das hervorzuheben, was Sie benötigen. Wie es derzeit geschrieben wird, ist es schwer zu sagen, was genau Sie fragen. –

+0

Wenn Sie Vuejs verwenden, macht es ein Kinderspiel, ich würde es sehr empfehlen –

+0

Ich werde versuchen, zu klären. Was ich brauche, ist ein Formatierer, um den Wert des Projekts basierend auf der Projektwährung zu formatieren. mit php money_format muss ich zuerst locale setzen und dann den echo-wert, der formatiert wird, aber in blade, wenn ich eine liste mit verschiedenen projekten habe, muss ich das locale so oft setzen wie die anzahl der zeilen in einer tabelle. Das sieht haarig für mich aus, ich kann wetten, dass es einen einfacheren Ansatz wie format_value ($ project-> value, $ project-> currency) gibt, der das richtige Format für Währungen liefert. – dascorp

Antwort

0

Sie können Ihre eigenen Transformatoren, so etwas wie dies umzusetzen:

In Ihrem Controller

public function getRows(Request $request, CurrencyTransformer $transformer) { 

    // get data 

    $rows = Model::where('some', 'condition')->get()->toArray(); 

    $data = $transformer->transformCollection($rows); 

    return view('some.view', compact('data')); 
} 

eine abstrakte Transformator Klasse erstellen

abstract class Transformer 
{ 

    public function transformCollection(array $items) 
    { 
     return array_map([$this, 'transform'], $items); 
    } 

    public abstract function transform($item); 
} 

eine Währung Transformator schaffen

class CurrencyTransformer extends Transformer 
{ 

    public function transform($item) { 

     switch($item['currency']) { 
      case "usd": 
       $item['value'] = "$" . $item['value']; 
       break; 
      ... 
     } 

     return $item; 

    } 
} 
+0

Vielen Dank für Ihre schnelle Antwort, nach ein paar Recherchen denke ich, werde ich mit der Hilfsfunktion zum Formatieren aller Währungswerte gehen und sie in Blade verwenden. damit ich es verwenden kann {{formatPrice ($ project-> value)}} dann werden meine Präfixe oder Suffixe für verschiedene Währungen gemäß den Regeln im Switch-Block angehängt – dascorp

Verwandte Themen