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 :

affichage de nombres avec décimales [4.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Par défaut affichage de nombres avec décimales
    Bonjour,
    C'est un vrai casse tête pour moi, impossible d'afficher les décimales des nombres.

    Entité fourniture, montant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        /**
         * @ORM\Column(type="decimal", precision=12, scale=2)
         * @Assert\GreaterThan(
         * value = 0,
         * message="Le montant doit être supérieur à zéro"
         * )
         * @Assert\NotBlank(message="Vous devez saisir un montant")
         * 
         * 
         */
        private $montant;
    mon controller :
    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
    17
    18
    19
    20
     
    	/**
         * @Route("/fourniture", name="fournitures_voir")
         */
    	public function fournitures_voir(FournitureRepository $em, Request $request) 
    	{
    		// On récupère le chantier par la session
    		$session = $request->getSession();
    		$chantier = $session->get('Chantier');
     
    		// Liste des fournitures du chantier à afficher en partie basse
    		$listFournitures = $em->findBy(
    			array('chantier' => $chantier)
    		); 
    dump($listFournitures);
    		return $this->render('fourniture/afficherFournitures.html.twig', [
    			'fournitures' => $listFournitures,
    			'chantier' => $chantier
    		]);
    	}
    Le dump fait bien apparaitre des montants avec des décimales
    afficherFournitures.html.twig avec le montant formaté. Mais les valeurs sont affichées avec des décimales à 00. Si le montant en base vaut 9.99, il est affiché 9.00
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    {% extends '/chantier/detailsChantier.html.twig' %}
     
     
    	{% block bas %}	
     
    			{% block creation %}
    			<div class="container">
    				<a href="{{ path('fourniture_creer') }}" class="btn btn-success" role="button">Créer une dépense</a>
    				<p></p>
    			</div>
    			{% endblock %}  
     
    		<div class="container">
    		  <table class="table table-bordered">
    			<thead>
    			  <tr>
    				<th>Prestation</th>
    				<th>Date de la prestation</th>
    				<th>Montant</th>
    				<th>Commentaire</th>
    				<th></th>
    			  </tr>
    			</thead>
     
    			<tbody>
    			{% for Fourniture in fournitures %}
    			  <tr>
    				<td><a href="{{ path('fourniture_modifier', {'id': Fourniture.id}) }}"> {{ Fourniture.prestation.libelle }} </a></td>
    				<td>{{ Fourniture.datePrestation | date('d/m/Y') }}</td>
    				<td>{{ (Fourniture.montant)|number_format(2, '.', ' ') }}</td>
    				<td>{{ Fourniture.commentaire }}</td>
    			  </tr>
    			{% else %}
    			  <td>Pas (encore !) de dépenses</td>
    			{% endfor %}
    			</tbody>
    		  </table>
    		</div>	
     
    	{% endblock %}  
     
    {% block javascripts %}
    {% endblock %}
    Dans mon formulaire de création, j'ai le même problème, le montant affiché est alors 9
    FournitureType.php (j'ai testé tous les types pour montant)
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <?php
     
    namespace App\Form;
     
    use App\Entity\Fourniture;
    use App\Entity\Prestation;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
     
    use Symfony\Bridge\Doctrine\Form\Type\EntityType;
    use Symfony\Component\OptionsResolver\OptionsResolver;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Component\Form\Extension\Core\Type\MoneyType;
    use Symfony\Component\Form\Extension\Core\Type\NumberType;
     
     
    class FournitureType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
     
            $builder
                ->add('montant', TextType::class)
                ->add('commentaire', null, array(
                    'label' => 'Commentaire détaillant la nature de la prestation'
                ))
                ->add('prestation', EntityType::class, [
                    'class' => Prestation::class,
                    'choice_label' =>'libelle']) 
                ->add('datePrestation', null, array(
                    'widget' => 'single_text',
                    'label' => 'Date de la prestation'
                    ))
            ;
        }
     
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults([
                'data_class' => Fourniture::class,
            ]);
        }
    }
    et son formulaire associé qui affiche 9
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    {% extends "fourniture/afficherFournitures.html.twig" %}
     
    {% form_theme formFourniture 'bootstrap_4_layout.html.twig' %}
     
    {% block creation %}
     
    	<div class="container">
    		{% if editMode %}
    			<h2>Modification d'une dépense</h2>
    		{% else %}
    			<h2>Création d'une dépense</h2>
    		{% endif %}
    		<p></p>
     
    		{{ form_start(formFourniture, {'attr': {'novalidate': 'novalidate'}}) }}
     
    {#		{{ form_widget(formFourniture) }}  #}
    		<div class="row">
    		<div class="col-md-4">{{ form_row(formFourniture.prestation) }}</div>
    		<div class="col-md-4">{{ form_row(formFourniture.montant) }} </div>
    		<div class="col-md-4">{{ form_row(formFourniture.datePrestation) }}</div>
    		</div>
    		{{ form_row(formFourniture.commentaire, {'attr':{'placeholder': "Commentaire"}}) }}
     
    			<button type="submit" class="btn btn-success">
    			{% if editMode %}
    				Modifier la dépense
    			{% else %}
    				Ajouter la dépense
    			{% endif %}
    			</button>	
    			<a href="{{ path('fournitures_voir') }}" class="btn btn-secondary" role="button">Annuler</a>
     
    		{{ form_end(formFourniture) }}	
     
    		<p></p>		
    	</div>
     
    {% endblock %}
    Il semble que mon problème concerne toutes formes d'affichage de nombres avec décimales.

    J'ai du rater quelque chose quelque part.

    Merci d'avance pour votre aide

  2. #2
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Par défaut
    Dans la boucle de afficherFournitures.html.twig, j'ai mis des dumps pour voir le montant transmis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    .....
    {{ dump(fournitures) }}			
    	{% for Fourniture in fournitures %}
    {{ dump(Fourniture.montant) }}		
    ....
    résultat du dump avant la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    array:3 [0 => Fourniture {#500 ▶}
      1 => Fourniture {#583 ▶}
      2 => Fourniture {#554 ▼
        -id: 3
        -montant: "9.99"
        -commentaire: "test"
        -prestation: Prestation {#514 ▶ …2}
        -chantier: Chantier {#548 ▶ …2}
        -dateCreation: DateTime @1544918400 {#562 ▶}
        -datePrestation: DateTime @1543881600 {#565 ▶}
      }
    ]
    résultat du dump après la boucle
    je ne comprend pas

  3. #3
    Membre habitué Avatar de JeromeDz
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 14
    Par défaut
    essaye {{ Fourniture.montant|number_format }}


    https://twig.symfony.com/doc/2.x/fil...er_format.html

  4. #4
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Par défaut
    J'utilise bien
    <td>{{ (Fourniture.montant)|number_format(2, '.', ' ') }}</td>
    dans afficherFournitures.html.twig mais le problème semble être avant l'affichage, car le montant est tronqué dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    .....
    {{ dump(fournitures) }}			
    	{% for Fourniture in fournitures %}
    {{ dump(Fourniture.montant) }}		
    ....
    voir mon dernier message avec le résultat des dumps

  5. #5
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Par défaut
    Dans mon entité Fourniture, j'ai déclaré montant avec un type "decimal" par contre le getter et le setter sont en "int" ce qui semble cohérent avec le résultat affiché mais pas avec le type "decimal".
    En base manuellement j'avais mis 2 décimales.
    Si je crée un enregistrement avec l'applicatif, je n'ai pas de décimales en base donc un int.

    Finalement j'ai typé mon attribut montant en float et l'affichage semble cohérent.

    Y avait-il d'autres solutions ?

    Je suis curieux de savoir comment vous gérez les nombres décimaux

    Merci d'avance

  6. #6
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Par défaut
    Oups, à priori, il s'agissait d'une fausse manip de ma part, j'ai du modifier l'attribut montant, sans supprimer le getter et setter.
    Je suis repassé en "decimal" et ça à l'air de marcher.

    Manque de rigueur de ma part désolé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. affichage de nombres avec format
    Par aoumnad dans le forum VB.NET
    Réponses: 1
    Dernier message: 22/07/2012, 14h27
  2. affichage du nombre de décimales
    Par pppa1 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 27/06/2011, 22h37
  3. affichage de nombre avec virgule sur crystal report
    Par itservice dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/04/2009, 19h45
  4. Nombre avec décimales
    Par flamby6969 dans le forum VBA Access
    Réponses: 9
    Dernier message: 02/04/2009, 00h56
  5. InputBox nombre avec décimal
    Par Baba75AB dans le forum IHM
    Réponses: 2
    Dernier message: 19/06/2008, 17h09

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