From b9784fec691bc5df86f08b95901bdc00ab0894cf Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 24 Mar 2021 20:36:51 +0100 Subject: [PATCH] add missing parameters in node using url --- core/EventSuscriber/Site/NodeEventSubscriber.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/EventSuscriber/Site/NodeEventSubscriber.php b/core/EventSuscriber/Site/NodeEventSubscriber.php index cd1e252..39128d5 100644 --- a/core/EventSuscriber/Site/NodeEventSubscriber.php +++ b/core/EventSuscriber/Site/NodeEventSubscriber.php @@ -83,11 +83,13 @@ class NodeEventSubscriber extends EntityManagerEventSubscriber } $parameters = $node->getParameters(); + $routeParameters = []; foreach ($parameters as $key => $parameter) { $parameter['name'] = $this->routeParameterSlugify->slugify($parameter['name']); $routeParameter = sprintf('{%s}', $parameter['name']); $regex = '/'.preg_quote($routeParameter).'/'; + $routeParameters[] = $parameter['name']; if (!preg_match($regex, $generatedUrl)) { $generatedUrl .= '/'.$routeParameter; @@ -96,6 +98,20 @@ class NodeEventSubscriber extends EntityManagerEventSubscriber $parameters[$key] = $parameter; } + preg_match_all('/\{(.*)\}/isU', $generatedUrl, $matches, PREG_SET_ORDER); + + foreach ($matches as $match) { + if (!in_array($match[1], $routeParameters)) { + $parameters[] = [ + 'name' => $this->routeParameterSlugify->slugify($match[1]), + 'defaultValue' => null, + 'requirement' => null, + ]; + } + } + + $generatedUrl = str_replace('//', '/', $generatedUrl); + $node->setParameters($parameters); $attributes = $node->getAttributes();