Bonjour,
C'est un vrai casse tête pour moi, impossible d'afficher les décimales des nombres.
Entité fourniture, 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 /** * @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;
Le dump fait bien apparaitre des montants avec des décimales
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 ]); }
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
Dans mon formulaire de création, j'ai le même problème, le montant affiché est alors 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
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 %}
FournitureType.php (j'ai testé tous les types pour montant)
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
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, ]); } }
Il semble que mon problème concerne toutes formes d'affichage de nombres avec décimales.
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 %}
J'ai du rater quelque chose quelque part.
Merci d'avance pour votre aide
Partager