In Symfony 4.2, the Validator component has introduced a new DivisibleBy
constraint to check whether one number is a multiple of ("divisible by") some
other number. It's mostly useful for enforcing specific increments on a number:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// src/Entity/Item.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Item
{
/**
* @Assert\DivisibleBy(0.25)
*/
protected $weight;
/**
* @Assert\DivisibleBy(
* value = 5,
* message = "This item requires to be stocked in multiples of 5 units."
* )
*/
protected $quantity;
}
These constraints ensure that the weight
of the Item
is provided in
increments of 0.25
(e.g. 0.75
and 4.50
would be correct, but
0.18
or 7.32
wouldn't) and the quantity
must be divisible by 5
(25
and 22620
would be correct but 12
or 123456
wouldn't).
This is so business specific, but still helpful.
22,620 is divisible by 5 ? Of course but the result a float, not what is expected.
@Benjamin in English, the decimal separator is the dot. the comma is the thousands separator.
what?
@javier I would suggest not using the thousands separator in the example as it seems to confuse people ;)
@Philippe good idea! I've updated the blog post to remove the thousands separator. Thanks!