Nette component for creating currency input.
Install currency input library via composer:
composer require adt/nette-forms-currency
and register method extension in bootstrap.php
:
\ADT\Forms\Controls\CurrencyInput::register();
This allows you to call the method addCurrency
on class Nette\Forms\Form
or Nette\Forms\Container
.
For live formatting functionality its necessary to create custom js.
You can use our example bellow.
Install and link following libraries:
nette.ajax.js
autoNumeric
Initialize autoNumeric on currency input
$(function () {
$.nette.ext('live').after(function ($element) {
$element.find('.js-nette-forms-currency').each(function () {
new AutoNumeric(this, JSON.parse(this.dataset.options));
});
});
})
It's very simple:
$form->addCurrency('currency', 'label', \ADT\Forms\Controls\CurrencyInput::CURRENCY_CZK);
$form->onSuccess[] = function ($form) {
$form['currency']->getValue(); // returns eg. from "100 000 000,56 kč" => "100000000.56"
};
And in latte:
{input currency}
To turn on autocomplete in IDE, add @method CurrencyInput addCurrency($name, $label = null, $currency = null, $language = null)
to your base form.