/**
* Validates the provided field values.
*
* @param array $values The field values, keyed by field constants.
* @param AddressFormat $addressFormat The address format.
* @param Constraint $constraint The constraint.
*/
protected function validateFields($values, AddressFormat $addressFormat, $constraint)
{
// Validate the presence of required fields.
$requiredFields = $addressFormat->getRequiredFields();
foreach ($requiredFields as $field) {
if (empty($values[$field]) && in_array($field, $constraint->fields)) {
$this->addViolation($field, $constraint->notBlankMessage, $values[$field], $addressFormat);
}
}
// Validate the absence of unused fields.
$unusedFields = array_diff(AddressField::getAll(), $addressFormat->getUsedFields());
foreach ($unusedFields as $field) {
if (!empty($values[$field]) && in_array($field, $constraint->fields)) {
$this->addViolation($field, $constraint->blankMessage, $values[$field], $addressFormat);
}
}
}