Twig: Comment arrondir?
J'ai une division dans twig. Parfois, le résultat peut être avec des décimales et j'ai besoin d'avoir toujours un arrondi à la hausse.
Ex.
7 / 2 = 3.5
Je voudrais avoir
7 / 2 = 4
Je sais comment les utiliser-de-chaussée dans twig:
7 / 2 | floor = 3
Mais ce n'est arrondi à la baisse de chiffres, pas à celle du haut.
Je sais aussi que je peux utiliser number_format
7 / 2 | number_format(0, '.', ',') = 3
Ce qui permettra également de prendre vers le bas les chiffres.
Aucune idée sur comment le dire à brindille, tenir le haut de chiffres ?
Cela peut être fait dans un contrôleur (Symfony), mais je suis à la recherche pour le rameau version.
Merci.
source d'informationauteur Miloš
Vous devez vous connecter pour publier un commentaire.
Mise à jour
Sur les versions 1.15.0+,
round
filtre est disponible.http://twig.sensiolabs.org/doc/filters/round.html
Vous pouvez étendre twig et écrire vos fonctions personnalisées comme il est décrit ici
Et il sera quelque chose comme ceci:
De sorte que vous pouvez l'utiliser dans twig:
Nouveau dans la version 1.15.0: Le rond filtre a été ajouté dans Twig 1.15.0.
Exemple:
{{ 42.55|round(1, 'ceil') }}
La ronde filtre prend deux arguments optionnels; le premier indique la précision (la valeur par défaut est 0) et la seconde, la méthode d'arrondi (valeur par défaut)
http://twig.sensiolabs.org/doc/filters/round.html
Aucune idée de comment il est dans les versions précédentes, mais dans Symfony 2.2.1 vous devez utiliser des parenthèses autour de votre calcul (en supposant que vous avez créé à l'extension):
(7 /2)|ceil
Apparemment
7 /2|ceil
est le même que7 /(2|ceil)
puisqu'ils ont donné le même (mauvais) résultat et seulement au-dessus de la solution a fonctionné pour moi.Avez-vous essayé
7 //2
?Ce page de documentation pourrait être utile.
http://twig.sensiolabs.org/doc/filters/round.html
De départ avec Twig 1.15.0 vous pouvez utiliser la ronde " filtre et pass 'ceil" comme second paramètre. La solution devrait ressembler à ceci:
Mise en forme des nombres pour afficher définitivement appartient à la vue, pas le contrôleur. Cela serait considéré comme de la logique d'affichage, ce qui est différent de la logique métier dans les contrôleurs qui doivent être gardés comme nettoyer un minimum que possible.
Si vous utilisez la version 1.12.0 ou plus récent, vous pouvez utiliser l'opérateur ternaire et faire quelque chose comme ceci:
{{ ((7 /2) > (7 //2)) ? (7 //2) + 1 : (7 //2) }}
Il n'est pas si "élégant", mais il fonctionne de toute façon.
http://php.net/manual/en/function.ceil.php
utiliser le plafond de la fonction de php pour faire ce que vous voulez