2012-01-14 8 views
4

symfony 1.xでは、世界のすべての通貨で選択された「通貨」フィールドタイプがありました。 symfony2には次のようなものがありますか?symfony2の通貨リスト

答えて

8

私は1つを見つけることができなかったので、自分自身を作成し​​ました。私は、これは私はこれが役に立てば幸いこれは、実際のフォームタイプ

namespace Gilden\Bundle\InvoiceBundle\Form\Extension\Type; 

use Gilden\Bundle\InvoiceBundle\Form\Extension\ChoiceList\CurrencyChoiceList; 
use Symfony\Component\Form\AbstractType; 

class CurrencyType extends AbstractType 
{ 
    /** 
    * {@inheritDoc} 
    */ 
    public function getDefaultOptions(array $options) 
    { 
     return array(
      'choice_list'  => new CurrencyChoiceList(), 
      'preferred_choices' => array('EUR', 'USD', 'RUB', 'LVL', 'LTL') 
     ); 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    public function getParent(array $options) 
    { 
     return 'choice'; 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    public function getName() 
    { 
     return 'currency'; 
    } 
} 

あるすべての通貨

namespace Gilden\Bundle\InvoiceBundle\Form\Extension\ChoiceList; 

use Symfony\Component\Form\Extension\Core\ChoiceList\ChoiceListInterface; 

/** 
* Choice list for ISO currencies found on http://www.xe.com/iso4217.php 
*/ 
class CurrencyChoiceList implements ChoiceListInterface 
{ 
    public function getChoices() 
    { 
     return array(
      'AED' => 'AED', 'AFN' => 'AFN', 'ALL' => 'ALL', 
      'AMD' => 'AMD', 'ANG' => 'ANG', 'AOA' => 'AOA', 
      'ARS' => 'ARS', 'AUD' => 'AUD', 'AWG' => 'AWG', 
      'AZN' => 'AZN', 'BAM' => 'BAM', 'BBD' => 'BBD', 
      'BDT' => 'BDT', 'BGN' => 'BGN', 'BHD' => 'BHD', 
      'BIF' => 'BIF', 'BMD' => 'BMD', 'BND' => 'BND', 
      'BOB' => 'BOB', 'BRL' => 'BRL', 'BSD' => 'BSD', 
      'BTN' => 'BTN', 'BWP' => 'BWP', 'BYR' => 'BYR', 
      'BZD' => 'BZD', 'CAD' => 'CAD', 'CDF' => 'CDF', 
      'CHF' => 'CHF', 'CLP' => 'CLP', 'CNY' => 'CNY', 
      'COP' => 'COP', 'CRC' => 'CRC', 'CUC' => 'CUC', 
      'CUP' => 'CUP', 'CVE' => 'CVE', 'CZK' => 'CZK', 
      'DJF' => 'DJF', 'DKK' => 'DKK', 'DOP' => 'DOP', 
      'DZD' => 'DZD', 'EGP' => 'EGP', 'ERN' => 'ERN', 
      'ETB' => 'ETB', 'EUR' => 'EUR', 'FJD' => 'FJD', 
      'FKP' => 'FKP', 'GBP' => 'GBP', 'GEL' => 'GEL', 
      'GGP' => 'GGP', 'GHS' => 'GHS', 'GIP' => 'GIP', 
      'GMD' => 'GMD', 'GNF' => 'GNF', 'GTQ' => 'GTQ', 
      'GYD' => 'GYD', 'HKD' => 'HKD', 'HNL' => 'HNL', 
      'HRK' => 'HRK', 'HTG' => 'HTG', 'HUF' => 'HUF', 
      'IDR' => 'IDR', 'ILS' => 'ILS', 'IMP' => 'IMP', 
      'INR' => 'INR', 'IQD' => 'IQD', 'IRR' => 'IRR', 
      'ISK' => 'ISK', 'JEP' => 'JEP', 'JMD' => 'JMD', 
      'JOD' => 'JOD', 'JPY' => 'JPY', 'KES' => 'KES', 
      'KGS' => 'KGS', 'KHR' => 'KHR', 'KMF' => 'KMF', 
      'KPW' => 'KPW', 'KRW' => 'KRW', 'KWD' => 'KWD', 
      'KYD' => 'KYD', 'KZT' => 'KZT', 'LAK' => 'LAK', 
      'LBP' => 'LBP', 'LKR' => 'LKR', 'LRD' => 'LRD', 
      'LSL' => 'LSL', 'LTL' => 'LTL', 'LVL' => 'LVL', 
      'LYD' => 'LYD', 'MAD' => 'MAD', 'MDL' => 'MDL', 
      'MGA' => 'MGA', 'MKD' => 'MKD', 'MMK' => 'MMK', 
      'MNT' => 'MNT', 'MOP' => 'MOP', 'MRO' => 'MRO', 
      'MUR' => 'MUR', 'MVR' => 'MVR', 'MWK' => 'MWK', 
      'MXN' => 'MXN', 'MYR' => 'MYR', 'MZN' => 'MZN', 
      'NAD' => 'NAD', 'NGN' => 'NGN', 'NIO' => 'NIO', 
      'NOK' => 'NOK', 'NPR' => 'NPR', 'NZD' => 'NZD', 
      'OMR' => 'OMR', 'PAB' => 'PAB', 'PEN' => 'PEN', 
      'PGK' => 'PGK', 'PHP' => 'PHP', 'PKR' => 'PKR', 
      'PLN' => 'PLN', 'PYG' => 'PYG', 'QAR' => 'QAR', 
      'RON' => 'RON', 'RSD' => 'RSD', 'RUB' => 'RUB', 
      'RWF' => 'RWF', 'SAR' => 'SAR', 'SBD' => 'SBD', 
      'SCR' => 'SCR', 'SDG' => 'SDG', 'SEK' => 'SEK', 
      'SGD' => 'SGD', 'SHP' => 'SHP', 'SLL' => 'SLL', 
      'SOS' => 'SOS', 'SPL' => 'SPL', 'SRD' => 'SRD', 
      'STD' => 'STD', 'SVC' => 'SVC', 'SYP' => 'SYP', 
      'SZL' => 'SZL', 'THB' => 'THB', 'TJS' => 'TJS', 
      'TMT' => 'TMT', 'TND' => 'TND', 'TOP' => 'TOP', 
      'TRY' => 'TRY', 'TTD' => 'TTD', 'TVD' => 'TVD', 
      'TWD' => 'TWD', 'TZS' => 'TZS', 'UAH' => 'UAH', 
      'UGX' => 'UGX', 'USD' => 'USD', 'UYU' => 'UYU', 
      'UZS' => 'UZS', 'VEF' => 'VEF', 'VND' => 'VND', 
      'VUV' => 'VUV', 'WST' => 'WST', 'XAF' => 'XAF', 
      'XCD' => 'XCD', 'XDR' => 'XDR', 'XOF' => 'XOF', 
      'XPF' => 'XPF', 'YER' => 'YER', 'ZAR' => 'ZAR', 
      'ZMK' => 'ZMK', 'ZWD' => 'ZWD', 
     ); 
    } 
} 

を収容するためのクラスですhere

からリストを得ました。

+0

gildenあなたの選択リストは機能します。しかし、通貨の完全な名称(EUR =>ユーロ、米ドル=>米ドル)、およびユーザーロケールで通貨名を表示する可能性があることを忘れています。 symfony2でsymfony 1.xが持っていた非常に便利な機能が欠落しているのは本当にわかりません。通貨の例リスト、日付範囲のフィールドタイプ、日付範囲のバリデーターの制約。 – smoreno

+1

@smoreno完全な名前はすべての言語で異なりますので、[translation](http://symfony.com/doc/2.0/book/translation.html)を使用することは賢明でしょう。 [フォームウィジェットをカスタマイズする]必要もありますが(http://symfony.com/doc/2.0/cookbook/form/form_customization.html#how-to-customize-an-individual-field)、これはすべて落ちますすでにこの質問の範囲外です:) – gilden