Aller au contenu

phil/money-bundle

alpha

Des montants d'argent dans les formulaires, la validation, les gabarits Twig et les entités Doctrine de Symfony, sans nombres à virgule flottante.

phil/money-bundle intègre phil/money à une application Symfony. Il garde, par configuration, les devises que l'application accepte. Il ajoute un type de formulaire qui lit un montant dans la locale de la requête sans jamais passer par un nombre à virgule flottante, deux contraintes de validation, un filtre Twig format_money avec deux fonctions schema.org, et des associations Doctrine qui stockent une devise dans une colonne et un montant dans deux. Il ne convertit pas les devises, ne récupère pas de taux de change, n'arrondit pas les montants et ne fixe pas les prix : les montants restent dans leur devise, et un montant plus fin que sa devise est refusé plutôt qu'arrondi.

Il s'adresse à une application Symfony où un administrateur saisit des prix, un visiteur les voit et des entités les stockent. Le code hors de Symfony, ou une couche de domaine qui ne fait que calculer, n'a besoin que de phil/money.

C'est un bundle Symfony. Il se branche aux composants Form et Validator, à Twig lorsque Twig est installé, et à Doctrine ORM lorsque DoctrineBundle est enregistré, en associant Money comme objet intégrable.

La configuration est vérifiée à la construction du conteneur, de sorte qu'un code de devise inconnu arrête le noyau en nommant le code. Chaque montant traverse le bundle sous forme de Money, du champ de formulaire jusqu'à la colonne de la base de données.

État

PartieÉtat
Configuration phil_money et AcceptedCurrenciesImplémenté et testé
Type de formulaire MoneyType, lu et écrit dans la locale de la requêteImplémenté et testé
Contraintes AcceptedCurrency et MoneyRange, messages en anglais et en françaisImplémenté et testé
Filtre Twig format_money, fonctions Twig money_schema et price_schemaImplémenté et testé
Type de colonne phil_currency et l'objet intégrable MoneyImplémenté et testé
Un test avec noyau d'un formulaire, des contraintes, de Twig et de SQLiteImplémenté

Documentation

DocumentContenu
InstallationLes prérequis, l'installation et l'enregistrement du bundle.
ConfigurationChaque clé, sa valeur par défaut, et les services qu'enregistre le bundle.
FormulairesMoneyType : les options, les champs qu'il affiche, la lecture du montant et ses erreurs.
ValidationAcceptedCurrency et MoneyRange, avec leurs messages.
TwigLe filtre format_money, et format_currency.
DoctrineLe type de colonne phil_currency et l'objet intégrable Money.
Points d'extensionCe qu'une application implémente, configure, remplace ou utilise.
TestsLes tests du bundle, et comment tester des formulaires et des entités qui contiennent de l'argent.
RéférenceChaque type du bundle, avec son rôle.

Démarrage rapide

composer require phil/money-bundle
# config/packages/phil_money.yaml
phil_money:
    currencies: [CAD, USD]
#[ORM\Embedded(class: Money::class)]
#[AcceptedCurrency]
#[MoneyRange(min: '0.01')]
public Money $price;

$builder->add('price', MoneyType::class);
{{ product.price|format_money }}

Prérequis

PHP 8.5 ou plus récent avec ext-intl, phil/money, et les composants form, validator et intl de Symfony 8.2. Facultatifs : twig/twig pour le filtre, doctrine/dbal et doctrine/orm pour les associations.

Contribuer

Les contributions sont les bienvenues sur le monodépôt PHIL : lisez le guide de contribution et le code de conduite. Signalez une vulnérabilité en privé, comme l'explique la politique de sécurité, jamais dans un ticket public.

Licence

MIT, © Philippe Gamache, doing business as Le Gnome Archiviste; a Parler Haut Interagir Librement project. Voir LICENSE.