From c925fae1801c04fce4e3e9b81cb380c5779fa4b5 Mon Sep 17 00:00:00 2001 From: Loz Calver Date: Wed, 2 Nov 2022 10:02:42 +0000 Subject: [PATCH 1/3] NEW: Add onBeforeRender extension hook to Form --- src/Forms/Form.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Forms/Form.php b/src/Forms/Form.php index c816c53f3..4d46f1fdb 100644 --- a/src/Forms/Form.php +++ b/src/Forms/Form.php @@ -1552,10 +1552,13 @@ class Form extends ViewableData implements HasRequestHandler HTTPCacheControlMiddleware::singleton()->disableCache(); } - $return = $this->renderWith($this->getTemplates()); + $context = $this; + $this->extend('onBeforeRender', $context); + + $return = $context->renderWith($this->getTemplates()); // Now that we're rendered, clear message - $this->clearMessage(); + $context->clearMessage(); return $return; } From e2cb683f148373971bd1654c16e536b602277883 Mon Sep 17 00:00:00 2001 From: Loz Calver Date: Wed, 2 Nov 2022 10:06:23 +0000 Subject: [PATCH 2/3] FIX: Stop FormField onBeforeRenderHolder extension result being overridden --- src/Forms/FormField.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Forms/FormField.php b/src/Forms/FormField.php index 8632cfedf..760c012c6 100644 --- a/src/Forms/FormField.php +++ b/src/Forms/FormField.php @@ -959,7 +959,7 @@ class FormField extends RequestHandler $this->extend('onBeforeRenderHolder', $context, $properties); if (count($properties ?? [])) { - $context = $this->customise($properties); + $context = $context->customise($properties); } return $context->renderWith($this->getFieldHolderTemplates()); From 7f8f5afc9191f6a97e9e097fa44afd059bc68b23 Mon Sep 17 00:00:00 2001 From: Loz Calver Date: Wed, 2 Nov 2022 11:57:57 +0000 Subject: [PATCH 3/3] Ensure forms/fields overridden by onBeforeRender() can override templates --- src/Forms/Form.php | 2 +- src/Forms/FormField.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Forms/Form.php b/src/Forms/Form.php index 4d46f1fdb..9e0f852db 100644 --- a/src/Forms/Form.php +++ b/src/Forms/Form.php @@ -1555,7 +1555,7 @@ class Form extends ViewableData implements HasRequestHandler $context = $this; $this->extend('onBeforeRender', $context); - $return = $context->renderWith($this->getTemplates()); + $return = $context->renderWith($context->getTemplates()); // Now that we're rendered, clear message $context->clearMessage(); diff --git a/src/Forms/FormField.php b/src/Forms/FormField.php index 760c012c6..bd24b8392 100644 --- a/src/Forms/FormField.php +++ b/src/Forms/FormField.php @@ -927,7 +927,7 @@ class FormField extends RequestHandler $context = $context->customise($properties); } - $result = $context->renderWith($this->getTemplates()); + $result = $context->renderWith($context->getTemplates()); // Trim whitespace from the result, so that trailing newlines are suppressed. Works for strings and HTMLText values if (is_string($result)) { @@ -962,7 +962,7 @@ class FormField extends RequestHandler $context = $context->customise($properties); } - return $context->renderWith($this->getFieldHolderTemplates()); + return $context->renderWith($context->getFieldHolderTemplates()); } /**