ZF2 Module that bundles Sebastian Bergmans money library and at some point will do other things too...
A Zend Framework 2 module intended to make it easier to work with money.
Essentially, this module imports Sebastian Bergmann's Money Library but probably controversially doesn't use it as a dependency with composer etc. The reason for this in the first instance was to get access to private static member vars in
Currency but things have changed since first making this for ZF2 a long time ago. It's a useful module but really, it should be using moneyphp/money for its value objects. I have legacy code that uses the money VO's in the NetglueMoney namespace, so it's staying as-is for now but in future I'll probably migrate to moneyphp.
It's important to note that the Money value object stores the amount as an integer, the given currencies' smallest unit.
$ composer require netglue/zf2-money-module
The currency list is intended to provide an easy way to configure the ISO currencies your app would be limited to using/accepting/whatever. A simple object that's retrievable form the service locator with
'NetglueMoney\Service\CurrencyList'. Take a look in
module.config.dist.php for more info on configuration.
Validates basic code format and also uses the currency list service to exclude codes that are not 'allowed' or unknown
A select element that should be retrieved via the
FormElementManager if you want it's validator and list of available currencies to all point to the same currency list.
Within your form element config, you should refer to the select element with its fully qualified class name
\NetglueMoney\Form\Element\SelectCurrency - A
CurrencyCode validator will automatically be added to it.
A fieldset that will accept or hydrate to an instance of
NetglueMoney\Money\Money. If you have a look at the tests you'll find an example of binding a model to a form that that hydrates the money instance.
Largely based on
Zend\I18n\View\Helper\CurrencyFormat, but the parameters have been changed:
$money = new Money(123456, new Currency('GBP')); echo $this->moneyFormat($money); // £1,234.56 (Assuming default locale of en_GB) echo $this->moneyFormat($money, 'de_DE'); // 1.234,56 £ echo $this->moneyFormat($money, 'de_DE', false); // 1.234 £
You can also specify custom format patterns - look at NumberFormatter docs for more info.
- Removed initializers and modernised to require PHP >= 7.1
- Compatible with Zend Framework 3
- Theoretically compatible with Expressive too
- Merged in changes from 1.5.0 of sebastianbergmann/money
formMoneyview helper and tests for rendering text inputs that are intended to be used for inputting money. Accepts locale and uses a number formatter to format the input value to a locale string
getMoney()methods to the money fieldset so it's easier to use when not binding an entity in a specific form and/or not being used with the form element manager
moneyFormatview helper and tests
- Initial Release contains the Money and Currency value objects, ZF2 module setup along with a Money Fieldset and companion Hydrator and other stuff...
- Migrate to using moneyphp/money for the value objects