valeur courante de l'onglet Information. $fields = [ 'description' => $supplier->getDescription(), 'competitors' => $supplier->getCompetitors(), 'foundedAt' => $supplier->getFoundedAt(), 'employeesCount' => $supplier->getEmployeesCount(), 'revenueAmount' => $supplier->getRevenueAmount(), 'directorName' => $supplier->getDirectorName(), 'profitAmount' => $supplier->getProfitAmount(), 'volumeForecast' => $supplier->getVolumeForecast(), ]; $violations = new ConstraintViolationList(); foreach ($fields as $property => $value) { if ($this->isMissing($value)) { $violations->add(new ConstraintViolation( // Pas de nom de champ technique dans le message : la violation est // deja rattachee au bon champ via son propertyPath (mappe inline // cote front par useFormErrors). 'Ce champ est obligatoire pour le rôle Commerciale.', null, [], $supplier, $property, $value, )); } } if (count($violations) > 0) { throw new ValidationException($violations); } } /** * Une valeur est manquante si null ou, pour une chaine, vide apres trim. Les * zeros numeriques (employeesCount = 0, profitAmount = "0.00", * volumeForecast = 0) sont des valeurs valides : on ne les considere pas * manquants. */ private function isMissing(mixed $value): bool { if (null === $value) { return true; } return is_string($value) && '' === trim($value); } }