From dadbdf909fe7b665f255cf336c3511afca955a2e Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Fri, 29 Jan 2016 17:10:55 +0100 Subject: [PATCH] (mvc) add simpler model validation method just a pattern that returns from time to time, encapsulated into a new method so we can remove some code. --- .../app/models/OPNsense/Base/BaseModel.php | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php index 7f77455bf..18dad3bef 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php @@ -322,6 +322,29 @@ abstract class BaseModel return $messages; } + /** + * perform a validation on changed model fields, using the (renamed) internal reference as a source pointer + * for the requestor to identify its origin + * @param null|string $sourceref source reference, for example model.section + * @param null|string $targetref target reference, for example section + * @return array list of validation errors, indexed by field reference + */ + public function validate($sourceref = null, $targetref = null) + { + $result = array(); + $valMsgs = $this->performValidation(); + foreach ($valMsgs as $field => $msg) { + // replace absolute path to attribute for relative one at uuid. + if ($sourceref != null) { + $fieldnm = str_replace($sourceref, $targetref, $msg->getField()); + $result[$fieldnm] = $msg->getMessage(); + } else { + $result[$msg->getField()] = $msg->getMessage(); + } + } + return $result; + } + /** * render xml document from model including all parent nodes. * (parent nodes are included to ease testing)