From 989fdad5610da816997f96a3a03476e974f23bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Fri, 25 Oct 2024 18:33:22 +0200 Subject: [PATCH] Add `chill_path_force_return_path` method to routing helper Implemented a new Twig function `chill_path_force_return_path` to enforce a specific return path within the URL. Updated relevant template to utilize this new function for better control over URL routing and return path management. OP#787 https://champs-libres.openproject.com/work_packages/787 --- .../Templating/ChillTwigRoutingHelper.php | 23 +++++++++++++++++++ .../views/Person/list_with_period.html.twig | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/Bundle/ChillMainBundle/Templating/ChillTwigRoutingHelper.php b/src/Bundle/ChillMainBundle/Templating/ChillTwigRoutingHelper.php index 5f67ccfe2..9e06eaee8 100644 --- a/src/Bundle/ChillMainBundle/Templating/ChillTwigRoutingHelper.php +++ b/src/Bundle/ChillMainBundle/Templating/ChillTwigRoutingHelper.php @@ -56,9 +56,32 @@ class ChillTwigRoutingHelper extends AbstractExtension new TwigFunction('chill_return_path_or', $this->getReturnPathOr(...), ['is_safe_callback' => $this->isUrlGenerationSafe(...)]), new TwigFunction('chill_path_add_return_path', $this->getPathAddReturnPath(...), ['is_safe_callback' => $this->isUrlGenerationSafe(...)]), new TwigFunction('chill_path_forward_return_path', $this->getPathForwardReturnPath(...), ['is_safe_callback' => $this->isUrlGenerationSafe(...)]), + new TwigFunction('chill_path_force_return_path', $this->getPathForceReturnPath(...), ['is_safe_callback' => $this->isUrlGenerationSafe(...)]), ]; } + /** + * Build a URL with a forced returnPath parameter. + * + * @param string $forcePath the forced path to return to + * @param string $name the name of the route + * @param array $parameters additional parameters for the URL + * @param bool $relative whether the URL should be relative + * @param string|null $label optional label for the return path + * + * @return string the generated URL + */ + public function getPathForceReturnPath(string $forcePath, string $name, array $parameters = [], $relative = false, $label = null): string + { + $params = [...$parameters, 'returnPath' => $forcePath]; + + if (null !== $label) { + $params['returnPathLabel'] = $label; + } + + return $this->originalExtension->getPath($name, $params, $relative); + } + public function getLabelReturnPath($default) { $request = $this->requestStack->getCurrentRequest(); diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Person/list_with_period.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Person/list_with_period.html.twig index 7c75bc712..3c912ae58 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/Person/list_with_period.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/Person/list_with_period.html.twig @@ -341,7 +341,7 @@ {{ entityWorkflow|chill_entity_render_string }}