2016-10-25 18 views
1

Laravelブレードの金額を書式設定する際に、モデル通貨に基づいて助けてください。laravelの通貨書式

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

プロジェクトは、与えられた通貨形式で表示されなければならない...(3) 'usd'、 'eur'、 'czk'、 'huf' チャーとして二重と通貨として格納されています

PHP money_formatは、各行または各プロジェクトページでプロジェクト固有の通貨を使用するロケールを使用します。

+0

特定の問題を明確にしたり、詳細を追加して必要なものを正確に強調してください。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。 –

+0

あなたがvuejsを使うとそれは簡単になります。私はそれを強く勧めます –

+0

私は明確にしようとします。私が必要とするのは、プロジェクトの通貨に基づいてプロジェクトの価値をフォーマットするためのフォーマッタです。 PHPのmoney_formatを使用して私は最初にロケールを設定し、その後、私はロケールをテーブルの行の数と同じくらい多くの時間を設定する必要があります別のプロジェクトのリストを持っているブレードで形成されるエコー値を持っている必要があります。これは私のために毛深く見える、私はformat_value($プロジェクト - >値、$プロジェクト - >通貨)のような簡単なアプローチが通貨のための適切な形式を返すことを賭けることができます。 – dascorp

答えて

0

あなたは、このような何かを、独自の変圧器を実装することができます:あなたのコントローラで

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')); 
} 

abstract class Transformer 
{ 

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

    public abstract function transform($item); 
} 

抽象トランスクラスを作成し、通貨トランス

class CurrencyTransformer extends Transformer 
{ 

    public function transform($item) { 

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

     return $item; 

    } 
} 
を作成
+0

私は、すべての通貨価値をフォーマットしてブレードで使用するためのヘルパー機能を試してみたいと思っています。私は{{formatPrice($ project-> value)}}を使うことができます。そして、異なる通貨の接頭辞または接尾辞がswitchブロックのルールに従って追加されます – dascorp

関連する問題