2016-05-03 8 views
1

では動作しません:インド、USDなどを...小枝拡張は、私は別の通貨のフォーマットと同様の金額を示すために小枝拡張を作成しているsymfonyの2

Symfony2のガイドにより示唆されるように、次のように私はそれをやっています。

account.twig.extension.accounttwigextension: 
     class: AccountBundle\Extension\AccountTwigExtension 
     tags: 
      - { name: twig.extension } 

私は小枝ファイルでこれを使用していた場合:: {{ 50000 | get_money_indian_format }}

私は次のようなエラーになっています: にフィルタget_money_indian_formatをんapp/config/services.ymlでそれを登録

NameSpace/AccountBundle/Extension/AccountExtension.php

namespace Edu\AccountBundle\Extension; 

use Symfony\Component\HttpKernel\KernelInterface; 

class AccountTwigExtension extends \Twig_Extension 
{ 
    public function getFilters() 
    { 
     return array(
      'get_money_indian_format' => new \Twig_Filter_Method($this, 'get_money_indian_format'), 
     ); 
    } 

    function get_money_indian_format($amount, $suffix = 1) { 
     setlocale(LC_MONETARY, 'en_IN'); 
     if (ctype_digit($amount)) { 
      // is whole number 
      // if not required any numbers after decimal use this format 
      $amount = money_format('%!.0n', $amount); 
     } else { 
      // is not whole number 
      $amount = money_format('%!i', $amount); 
     } 

     if (!$suffix) { 
      return $amount; 
     } else { 
      return $amount; 
     } 
     return $amount; 
    } 

    public function getName() 
    { 
     return 'account_twig_extension'; 
    } 
} 

EduAccountBundle:Ledger:showLedgers.html.twigには存在しません

答えて

3

私はそれがあるとして/あなたのコードをコピー&ペーストした場合、私は解決した場合、あなたのサービス定義の中で、あなたが

AccountBundle\ExtensionAccountTwigExtension 

としてそれを呼んでいる間、あなたの拡張機能が

Edu\AccountBundle\ExtensionAccountTwigExtension 

ですので、私はエラーを取得します名前空間、すべてが期待どおりに動作します。

+0

ありがとうございます。私はこの拡張子をJavaScriptファイルでどのように呼び出すことができますか教えてください。 Twigでそのように動作します:{{50000 | get_money_indian_format}}。私はどのようにすればいいのですか? –

+0

できません。 Twigはサーバー側のテンプレートエンジンです。ページをレンダリングし、HTMLをブラウザに送信します。 JSライブラリでそのロジックを再コーディングする方がおそらく他のどのソリューションよりも速いでしょう。 –

+0

ok、ありがとうFrancesco –

関連する問題