From 6c02d112f815ed2b3f051924258844cfdee1b149 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Thu, 2 Jul 2015 16:16:39 +0200 Subject: [PATCH] (mvc) regression, fix validation issue on arrayfields children --- .../models/OPNsense/Base/FieldTypes/ArrayField.php | 1 + .../models/OPNsense/Base/FieldTypes/BaseField.php | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ArrayField.php b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ArrayField.php index e68dd53df..a508df868 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ArrayField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ArrayField.php @@ -84,6 +84,7 @@ class ArrayField extends BaseField // initialize field with new internal id and defined default value $node->setInternalReference($container_node->__reference.".".$key); $node->applyDefault(); + $node->setChanged(); $container_node->addChildNode($key, $node); } diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php index 7a0289be7..7974f0b40 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php @@ -256,6 +256,14 @@ abstract class BaseField $this->internalValue = $value; } + /** + * force field to act as changed, used after cloning. + */ + public function setChanged() + { + $this->internalInitialValue = true; + } + /** * check if field content has changed * @return bool change indicator @@ -452,16 +460,16 @@ abstract class BaseField */ public function setDefault($value) { + $this->internalValue = $value; $this->internalDefaultValue = $value; - $this->setValue($value); } /** - * (re)Apply default value + * (re)Apply default value without changing the initial value of the field */ public function applyDefault() { - $this->setValue($this->internalDefaultValue); + $this->internalValue = $this->internalDefaultValue; } /**