From 50d3ffb0353e122667ecd8b0af6073eba475c1c4 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 5 Nov 2016 10:59:53 +1100 Subject: [PATCH] Halycon models do not declare forceFill Only bind purgeable fallback event once (only needed once) Refs https://github.com/rainlab/translate-plugin/issues/54#issuecomment-256067096 --- modules/backend/traits/FormModelSaver.php | 2 +- modules/backend/widgets/Form.php | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/backend/traits/FormModelSaver.php b/modules/backend/traits/FormModelSaver.php index 3f188ddd6..80c6f66f3 100644 --- a/modules/backend/traits/FormModelSaver.php +++ b/modules/backend/traits/FormModelSaver.php @@ -90,7 +90,7 @@ trait FormModelSaver $model->addPurgeable($attributesToPurge); } else { - $model->bindEvent('model.saveInternal', function() use ($model, $attributesToPurge) { + $model->bindEventOnce('model.saveInternal', function() use ($model, $attributesToPurge) { foreach ($attributesToPurge as $attribute) { unset($model->attributes[$attribute]); } diff --git a/modules/backend/widgets/Form.php b/modules/backend/widgets/Form.php index c9ec6cdd1..faa0eb10c 100644 --- a/modules/backend/widgets/Form.php +++ b/modules/backend/widgets/Form.php @@ -319,7 +319,10 @@ class Form extends WidgetBase $data = $this->getSaveData(); } - $this->model->forceFill($data); + if (method_exists($this->model, 'forceFill')) { + $this->model->forceFill($data); + } + $this->data = (object) array_merge((array) $this->data, (array) $data); foreach ($this->allFields as $field) {