I remember in symfony 1.x there was a "currency" field type, which was a select with all currencies in the world. Is there something like this in symfony2?
I couldn't find one, so I created one myself. I got the list from here
This is a class for containing all the currencies
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',
);
}
}
This is the actual form type
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';
}
}
I hope this helps.
There is CurrencyType
in Symfony 2.3.
It uses Intl
component to get list of all currencies.
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Form/Extension/Core/Type/CurrencyType.php
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With