From 2c105cffc9436a0587381956118fe3361bad04d6 Mon Sep 17 00:00:00 2001 From: Mojmir Fendek Date: Fri, 13 Jan 2023 09:43:22 +1300 Subject: [PATCH] ENH: saveInto() new extension points. (#10636) * ENH: saveInto() new extension points. --- src/Forms/Form.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Forms/Form.php b/src/Forms/Form.php index 9e0f852db..838781221 100644 --- a/src/Forms/Form.php +++ b/src/Forms/Form.php @@ -1487,16 +1487,21 @@ class Form extends ViewableData implements HasRequestHandler */ public function saveInto(DataObjectInterface $dataObject, $fieldList = null) { + $form = $this; + $dataObject->invokeWithExtensions('onBeforeFormSaveInto', $form, $fieldList); + $dataFields = $this->fields->saveableFields(); $lastField = null; + if ($dataFields) { foreach ($dataFields as $field) { - // Skip fields that have been excluded + // Skip fields that have been excluded if ($fieldList && is_array($fieldList) && !in_array($field->getName(), $fieldList ?? [])) { continue; } $saveMethod = "save{$field->getName()}"; + if ($field->getName() == "ClassName") { $lastField = $field; } elseif ($dataObject->hasMethod($saveMethod)) { @@ -1506,9 +1511,12 @@ class Form extends ViewableData implements HasRequestHandler } } } + if ($lastField) { $lastField->saveInto($dataObject); } + + $dataObject->invokeWithExtensions('onAfterFormSaveInto', $form, $fieldList); } /**