Bonjour,
J’ai un problème où je ne vois pas comment faire.
Pour l’instant, j’ai un code qui marche bien, mais je souhaite l’optimiser en utilisant les asserts dans mon entité.
Désolé pour le pavé, mais je vais essayer d’être clair...
Le principe de mon code actuel est le suivant :
J’ai une entité avec un champ date défini en texttype, sinon le datepicker que j’utilise ne fonctionne pas.
Avec mon datepicker dans mon formulaire, le format de ma date est jj/mm/ssaa.
En base, je stock cette date au format ssaa-mm-jj dans un champ en varchar(10).
Ça, c’est un choix que j’ai fait depuis la création de mon site, et je préférerai ne pas devoir tout changer : les saisies dans les formulaires se font au format jj/mm/ssaa, et les dates sont stockées en base au format ssaa-mm-jj.
Dans mon contrôleur, après le test isvalid de mon formulaire, je contrôle la date saisie, la converti au format ssaa-mm-jj, et l’insère dans ma bdd.
Tout ça, ça marche bien !
Je ne mets pas le code, car tout est sur le principe des docs qu’on trouve sur Symfony.
Maintenant, je veux optimiser mon code, et utiliser les asserts au niveau de mon entité, pour supprimer les contrôles de date dans mon contrôleur, et mettre dans ma bdd ma date au format Date au lieu de varchar(10).
Dans mon entité, j’ajoute l’assert suivant sur mon champ date, assert qui prend par défaut le format ssaa-mm-jj, qui est bien celui que je veux pour stocker ma valeur en base :
@assert\date
Vu qu’avec mon datepicker la date est au format jj/mm/ssaa, ma valeur est toujours invalide.
J’ai essayé dans mon contrôleur de changer le format de ma date en ssaa-mm-jj, avant le test isvalid de mon formulaire.
Et là j’ai un message d’erreur qui me dit qu’on ne peut pas modifier un formulaire qui a déjà été soumis.
Y a-t-il un moyen de changer le format de ma date quand je soumets mon formulaire ?
Y a-t-il un fonction de Symfony qui permet ça, et que je ne connais pas ?
Ou un petit code Jquery (que j’utilise déjà dans mon projet pour d’autres trucs) ? Je ne suis pas du tout un pro de Jquery, donc est ce faisable ? Et comment ?
Merci d’avance pour votre aide !
Partager