headsnet / money-bundle
将moneyphp/money集成到您的Symfony应用程序中
Requires
- php: >=7.4
- moneyphp/money: ^3.3 || ^4.0
- symfony/framework-bundle: ^4.4 || ^5.0 || ^6.0 || ^7.0
Requires (Dev)
- doctrine/doctrine-bundle: ^1.0 || ^2.0
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^8.0 || ^9.0
- symfony/form: ^4.4 || ^5.0 || ^6.0 || ^7.0
- symfony/serializer: ^4.4 || ^5.0 || ^6.0 || ^7.0
- symfony/twig-bundle: ^4.4 || ^5.0 || ^6.0 || ^7.0
- symfony/validator: ^4.4 || ^5.0 || ^6.0 || ^7.0
- symplify/easy-coding-standard: ^11
Suggests
- doctrine/doctrine-bundle: Add a Money DBAL mapping type
- symfony/form: Add a data transformer
- symfony/serializer: Serialize/deserialize Money objects using Symfony library
- symfony/twig-bundle: Format and manipulate Money in Twig templates
- symfony/validator: Use custom validation constraints on Money objects
Conflicts
- doctrine/dbal: >=4.0.0
README
Money Bundle
这是一个将Money PHP集成到您的应用程序中的Symfony Bundle。
功能概述
-
Twig 扩展 - 在 Twig 模板中显示和处理 Money 对象
-
Doctrine 支持 - 在存储层中持久化 Money 对象
-
自定义序列化 - 将 Money 对象序列化和反序列化为字符串或数组值
-
自定义表单类型 - 在表单数据类中使用 Money 对象
安装
简单地使用 Composer 以常规方式安装。
composer require headsnet/money-bundle
然后将它添加到您的 bundles.php
文件中。
Headsnet\MoneyBundle\HeadsnetMoneyBundle::class => ['all' => true]
Doctrine
此 Bundle 为 Money 对象的 Currency
元素提供自定义的 Doctrine 类型,然后为您的模型提供 Doctrine Embeddable。
amount
列的数据类型设置为 integer
,这显然是一个有争议的问题,因为 Money 对象内部使用字符串,但让数据库使用整数类型允许原生排序和求和等操作。
表单
此 Bundle 提供了一个带有数据转换器的表单类型,它扩展了 Symfony 的 MoneyType
。
该字段将渲染一个 Money 字段,并将 Money 值对象转换为可读值。
Twig
格式化器
此 Bundle 提供了一个 Twig 过滤器,可以将 Money 对象格式化为带有货币符号的数字。
{{ object.amount|money }} # Renders e.g. "€10.00"
操作
此 Bundle 还提供了一个 Twig 工具,允许您在模板中直接创建 Money 对象。
money(AMOUNT, 'CURRENCY_CODE')
这通常用于创建一个变量,然后在循环中向其中添加值。例如。
{% set total = money(0, 'EUR') %} {% for line in order.lines %} {% set total = total.add(line.cost) %} {% endfor %} Total: {{ total|money }}
序列化器
此 Bundle 为 Money 对象提供了 Symfony 正常化器。
$amount = Money::EUR(200); $serializer->serialize($amount, 'json'); // ==> '{"amount":"200","currency":"EUR"}'
贡献
欢迎贡献。请提交包含一个修复/功能的每个拉取请求。
Composer 脚本已为您配置
> composer cs # Run coding standards checks
> composer cs-fix # Fix coding standards violations
许可证
此代码在 MIT 许可证下发布。有关更多信息,请参阅 LICENSE 文件。