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; } /**