MVC, handle validations. remove duplicate messages, when a fieldtype validates on multiple conditions, there may be duplicate texts in the validation output. for example:

```
            $validators[] = new MinMaxValidator(array('message' => $this->internalValidationMessage,
                "min" => $this->minimum_value,
                "max" => $this->maximum_value
            ));
            $validators[] = new Numericality(array('message' => $this->internalValidationMessage));
```

Will both fail when `122.99XX` is inserted, raising `internalValidationMessage` message twice
This commit is contained in:
Ad Schellevis 2018-08-05 17:00:52 +02:00
parent 3600cf26b4
commit cc5f5f05ee

View File

@ -154,14 +154,17 @@ abstract class ApiMutableModelControllerBase extends ApiControllerBase
} else {
$fieldnm = $resultPrefix.".".$msg->getField();
}
$msgText = $msg->getMessage();
if (empty($result["validations"][$fieldnm])) {
$result["validations"][$fieldnm] = $msg->getMessage();
$result["validations"][$fieldnm] = $msgText;
} elseif (!is_array($result["validations"][$fieldnm])) {
// multiple validations, switch to array type output
$result["validations"][$fieldnm] = array($result["validations"][$fieldnm]);
$result["validations"][$fieldnm][] = $msg->getMessage();
} else {
$result["validations"][$fieldnm][] = $msg->getMessage();
if (!in_array($msgText, $result["validations"][$fieldnm])) {
$result["validations"][$fieldnm][] = $msgText;
}
} elseif (!in_array($msgText, $result["validations"][$fieldnm])) {
$result["validations"][$fieldnm][] = $msgText;
}
}
return $result;