From a838d4f6a962c20cd4ed812223062e02a3f49316 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Mon, 28 Oct 2024 16:40:41 +0000 Subject: [PATCH] allow rendering of forms outside of dialog, fixes #4775 Closes #4775 Merge request studip/studip!3567 --- lib/classes/StudipController.php | 3 ++- lib/classes/forms/Form.php | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/classes/StudipController.php b/lib/classes/StudipController.php index f99511c543d..f749bd0d602 100644 --- a/lib/classes/StudipController.php +++ b/lib/classes/StudipController.php @@ -585,7 +585,8 @@ abstract class StudipController extends Trails\Controller public function render_form(\Studip\Forms\Form $form) { - $this->render_text($form->render()); + \NotificationCenter::postNotification('FormWillRender', $form); + $this->render_template($form->getTemplate(), $this->layout); } /** diff --git a/lib/classes/forms/Form.php b/lib/classes/forms/Form.php index a734e6fa6c0..0148c9ccb81 100644 --- a/lib/classes/forms/Form.php +++ b/lib/classes/forms/Form.php @@ -2,6 +2,8 @@ namespace Studip\Forms; +use Flexi\Template; + class Form extends Part { @@ -495,12 +497,20 @@ class Form extends Part * @return string * @throws \Flexi\TemplateNotFoundException */ - public function render() + public function render(string|Template $layout = null) { \NotificationCenter::postNotification('FormWillRender', $this); + return $this->getTemplate()->render([], $layout); + } + + /** + * Returns the template used for this form populated with this form object. + */ + public function getTemplate(): Template + { $template = $GLOBALS['template_factory']->open('forms/form'); $template->form = $this; - return $template->render(); + return $template; } /** -- GitLab