Bonjour,
J'ai un champs "prix" (défini en type double en base)
Je souhaite saisir de cette manière : 12 253.63
(donc un espace pour délimiter les milliers)
Dans mon formtype, j'ai défini mon champs comme ceci :
->add('prix', MoneyType::class, array('required' => false, 'attr' => array('maxlength' => 10, 'placeholder' => '0.00', 'data-thousands'=>' ')) )
Avec cette définition, je n'ai aucum mask de saisie : je peux saisir 12253.63 mais pas 12 253.63
Donc je rajoute la class 'currency' dans mon twig :
{{ form_label(form.prix, "Prix en €") }}
{{ form_widget(form.prix, {'attr': {'class': 'form-control currency ', 'required' : 'false'}}) }}
{{ form_errors(form.prix) }}
et je crée le script JS suivant :
$('.currency').inputmask({ 'alias': 'decimal', 'groupSeparator': ' ', 'autoGroup': true, 'digits': 2, rightAlign: false, 'digitsOptional': false, 'placeholder': '0.00'});
Dans ce script , j'ai bien le groupSeparator ' ' et non ',' (pour les anglosaxons)
LE PROBLEME : au moment de la validation du formulaire Twig, j'ai une erreur : "la valeur est non valide"
C"'est normal puisque le groupSeprator est un string (blanc) : si je met groupSeprator : '' (null), je n'ai pas ce problème.
Je ne peux pas mettre un string dans le champs prix défini en float dans la base (et en plus en MoneyType sur le formType.
Je cherche encore...
Mais j'ai besoin d'aide s'il vous plait.
Merci !
Salut,
Moi je ferais une regex dans le back-end avec un event listener FormEvents::PRE_SET_DATA puisque la validation se fait après.
https://symfony.com/doc/current/form/events.html
Ou alors un dataTransformer :
http://symfony.com/doc/master/form/data_transformers.html