urlGenerator = $urlGenerator; } /** * {@inheritdoc} */ public function getFilters() { return [ new TwigFilter('murph_url', [$this, 'replaceUrl']), ]; } public function replaceUrl(?string $content) { preg_match_all('#\{\{\s*url://(?P[a-z0-9_]+)(\?(?P.*))?\s*\}\}#isU', $content, $match, PREG_SET_ORDER); foreach ($match as $block) { $url = null; try { $block['params'] = $block['params'] ?? ''; $block['params'] = str_replace(['&', ' '], ['&', '%20'], $block['params']); $route = $block['route']; parse_str($block['params'], $params); $url = $this->urlGenerator->generate($route, $params, UrlGeneratorInterface::ABSOLUTE_URL); } catch (\Exception $e) { } $content = str_replace($block[0], $url, $content); } return $content; } }