IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

validation de type NumberType


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 23
    Par défaut validation de type NumberType
    Soit l'assert suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /**
         * @ORM\Column(type="decimal", precision=9, scale=2)
         * @Assert\notBlank()
         * @Assert\Type(type="NumberType", message = "La valeur {{ value }} doit être de type {{ type }}")
         * @Assert\Range(
         *      min = 10000,
         *      minMessage = "Le salaire doit au moins être égal à 10000"
         *      )
         */
        private $salaire;
    Quand on saisit la valeur 12000.98 ou 12000,98

    on obtient le message :
    La valeur 12000.98 doit être de type NumberType
    Je ne comprends pas pourquoi.....
    Quand je mets le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /**
         * @ORM\Column(type="decimal", precision=9, scale=2)
         * @Assert\notBlank()
         * @Assert\Type(type="float", message = "La valeur {{ value }} doit être de type {{ type }}")
         * @Assert\Range(
         *      min = 10000,
         *      minMessage = "Le salaire doit au moins être égal à 10000"
         *      )
         */
        private $salaire;
    Quand on saisit la valeur zzz
    on obtient le message :
    This value is not valid.
    pourquoi pas le message : La valeur zzz doit être de type float

    formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ->add('salaire', NumberType::class, array('label'  => 'Salaire de base : '))
    Merci pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    j'ai essayé ton code il fonctionne

    tu es sur que c'est pour ce champ que le form ne va pas ?

    vérifie avec la barre de debug

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2016
    Messages : 23
    Par défaut
    Bonsoir,

    Merci pour votre réponse.

    Voici les messages avec le code suivant :
    l'entity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
       /**
         * @ORM\Column(type="string", length=50) 
         * @Assert\NotBlank()
         */   
        private $nom;
     
        /**
         * @ORM\Column(type="decimal", precision=9, scale=2)
         * @Assert\notBlank()
         * @Assert\Type(type="NumberType::class", message = "La valeur {{ value }} doit être de type {{ type }}")
         * @Assert\Range(
         *      min = 10000,
         *      minMessage = "Le salaire doit au moins être égal à 10000"
         *      )
         */
        private $salaire;
    et employeType :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function buildForm(FormBuilderInterface $builder, array $options) {
            $builder
                    ->add('nom', TextType::class, array('label' => "Nom de l'employe : "))
                    ->add('salaire', NumberType::class, array('label' => 'Salaire de base : '))               
                    ->add('save', SubmitType::class, array('label' => 'Créer'));
        }
    et voici les résultats (on voit que le type numberType n'est pas reconnu, que ce soit avec un point décimal ou une virgule.

    Nom : Capture.PNG
Affichages : 3904
Taille : 5,2 Ko

    Nom : Capture2.PNG
Affichages : 3874
Taille : 3,6 Ko

    Je veux bien que tu me montres ton code.
    Merci encore.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    Ce code n'est pas bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Assert\Type(type="NumberType::class", message = "La valeur {{ value }} doit être de type {{ type }}"
    En indiquant ce type, tu imposes que ton champ soit un type NumberType class, hors ça doit être un float, donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Assert\Type(type="float", message = "La valeur {{ value }} doit être de type {{ type }}")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     /**
         * @ORM\Column(type="decimal", precision=9, scale=2, nullable=true)
         * @Assert\notBlank()
         * @Assert\Type(type="float", message = "La valeur {{ value }} doit être de type {{ type }}")
         * @Assert\Range(
         *      min = 10000,
         *      minMessage = "Le salaire doit au moins être égal à 10000"
         *      )
         */
        private $salaire;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $builder
                ->add('content')
                ->add('salaire', NumberType::class, array('label'  => 'Salaire de base : '))
     
            ;

Discussions similaires

  1. Réponses: 38
    Dernier message: 05/02/2015, 16h30
  2. Réponses: 5
    Dernier message: 31/07/2011, 11h19
  3. Réponses: 0
    Dernier message: 19/11/2008, 21h33
  4. Comment valider un type monétaire (Regex) ?
    Par whitespirit dans le forum Zend_Form
    Réponses: 12
    Dernier message: 30/04/2008, 09h29
  5. [Plan Type] Dossier de validation
    Par Casp dans le forum Test
    Réponses: 7
    Dernier message: 11/07/2004, 18h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo