headsnet/money-bundle

将moneyphp/money集成到您的Symfony应用程序中

安装次数: 11,973

依赖项: 0

建议者: 0

安全: 0

星标: 11

关注者: 3

分支: 0

开放问题: 0

类型:symfony-bundle

v0.1.12 2024-05-31 06:48 UTC

This package is auto-updated.

Last update: 2024-09-02 07:49:20 UTC


README

Build Status Latest Stable Version Total Downloads License

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 文件。