Renders the URI to a given node instance or -path.
public createNodeUri ( |
||
$controllerContext | ||
$node | mixed | A node object or a string node path, if a relative path is provided the baseNode argument is required |
$baseNode | Neos\ContentRepository\Domain\Model\NodeInterface | |
$format | string | Format to use for the URL, for example "html" or "json" |
$absolute | boolean | If set, an absolute URI is rendered |
$arguments | array | Additional arguments to be passed to the UriBuilder (for example pagination parameters) |
$section | string | |
$addQueryString | boolean | If set, the current query parameters will be kept in the URI |
$argumentsToBeExcludedFromQueryString | array | arguments to be removed from the URI. Only active if $addQueryString = TRUE |
$resolveShortcuts | boolean | INTERNAL Parameter - if FALSE, shortcuts are not redirected to their target. Only needed on rare backend occasions when we want to link to the shortcut itself. |
return | string | The rendered URI |
/** * Render the Uri. * * @return string The rendered URI or NULL if no URI could be resolved for the given node * @throws NeosException */ public function evaluate() { $baseNode = null; $baseNodeName = $this->getBaseNodeName() ?: 'documentNode'; $currentContext = $this->tsRuntime->getCurrentContext(); if (isset($currentContext[$baseNodeName])) { $baseNode = $currentContext[$baseNodeName]; } else { throw new NeosException(sprintf('Could not find a node instance in TypoScript context with name "%s" and no node instance was given to the node argument. Set a node instance in the TypoScript context or pass a node object to resolve the URI.', $baseNodeName), 1373100400); } try { return $this->linkingService->createNodeUri($this->tsRuntime->getControllerContext(), $this->getNode(), $baseNode, $this->getFormat(), $this->isAbsolute(), $this->getAdditionalParams(), $this->getSection(), $this->getAddQueryString(), $this->getArgumentsToBeExcludedFromQueryString()); } catch (NeosException $exception) { $this->systemLogger->logException($exception); return ''; } }
/** * Renders the URI. * * @param mixed $node A node object, a string node path (absolute or relative), a string node://-uri or NULL * @param string $format Format to use for the URL, for example "html" or "json" * @param boolean $absolute If set, an absolute URI is rendered * @param array $arguments Additional arguments to be passed to the UriBuilder (for example pagination parameters) * @param string $section * @param boolean $addQueryString If set, the current query parameters will be kept in the URI * @param array $argumentsToBeExcludedFromQueryString arguments to be removed from the URI. Only active if $addQueryString = TRUE * @param string $baseNodeName The name of the base node inside the TypoScript context to use for the ContentContext or resolving relative paths * @param boolean $resolveShortcuts INTERNAL Parameter - if FALSE, shortcuts are not redirected to their target. Only needed on rare backend occasions when we want to link to the shortcut itself. * @return string The rendered URI or NULL if no URI could be resolved for the given node * @throws ViewHelperException */ public function render($node = null, $format = null, $absolute = false, array $arguments = array(), $section = '', $addQueryString = false, array $argumentsToBeExcludedFromQueryString = array(), $baseNodeName = 'documentNode', $resolveShortcuts = true) { $baseNode = null; if (!$node instanceof NodeInterface) { $baseNode = $this->getContextVariable($baseNodeName); if (is_string($node) && substr($node, 0, 7) === 'node://') { $node = $this->linkingService->convertUriToObject($node, $baseNode); } } try { return $this->linkingService->createNodeUri($this->controllerContext, $node, $baseNode, $format, $absolute, $arguments, $section, $addQueryString, $argumentsToBeExcludedFromQueryString, $resolveShortcuts); } catch (NeosException $exception) { $this->systemLogger->logException($exception); } catch (NoMatchingRouteException $exception) { $this->systemLogger->logException($exception); } return ''; }
/** * Renders the link. Renders the linked node's label if there's no child content. * * @param mixed $node A node object, a string node path (absolute or relative), a string node://-uri or NULL * @param string $format Format to use for the URL, for example "html" or "json" * @param boolean $absolute If set, an absolute URI is rendered * @param array $arguments Additional arguments to be passed to the UriBuilder (for example pagination parameters) * @param string $section The anchor to be added to the URI * @param boolean $addQueryString If set, the current query parameters will be kept in the URI * @param array $argumentsToBeExcludedFromQueryString arguments to be removed from the URI. Only active if $addQueryString = TRUE * @param string $nodeVariableName The variable the node will be assigned to for the rendered child content * @param string $baseNodeName The name of the base node inside the TypoScript context to use for the ContentContext or resolving relative paths * @param boolean $resolveShortcuts INTERNAL Parameter - if FALSE, shortcuts are not redirected to their target. Only needed on rare backend occasions when we want to link to the shortcut itself. * @return string The rendered link * @throws ViewHelperException */ public function render($node = null, $format = null, $absolute = false, array $arguments = array(), $section = '', $addQueryString = false, array $argumentsToBeExcludedFromQueryString = array(), $baseNodeName = 'documentNode', $nodeVariableName = 'linkedNode', $resolveShortcuts = true) { $baseNode = null; if (!$node instanceof NodeInterface) { $baseNode = $this->getContextVariable($baseNodeName); if (is_string($node) && substr($node, 0, 7) === 'node://') { $node = $this->linkingService->convertUriToObject($node, $baseNode); } } try { $uri = $this->linkingService->createNodeUri($this->controllerContext, $node, $baseNode, $format, $absolute, $arguments, $section, $addQueryString, $argumentsToBeExcludedFromQueryString, $resolveShortcuts); $this->tag->addAttribute('href', $uri); } catch (NeosException $exception) { $this->systemLogger->logException($exception); } catch (NoMatchingRouteException $exception) { $this->systemLogger->logException($exception); } $linkedNode = $this->linkingService->getLastLinkedNode(); $this->templateVariableContainer->add($nodeVariableName, $linkedNode); $content = $this->renderChildren(); $this->templateVariableContainer->remove($nodeVariableName); if ($content === null && $linkedNode !== null) { $content = $linkedNode->getLabel(); } $this->tag->setContent($content); $this->tag->forceClosingTag(true); return $this->tag->render(); }