convertUriToObject() публичный Метод

Return the object the URI addresses or NULL.
public convertUriToObject ( string | Uri $uri, Neos\ContentRepository\Domain\Model\NodeInterface $contextNode = null ) : Neos\ContentRepository\Domain\Model\NodeInterface | Neos\Media\Domain\Model\AssetInterface | null
$uri string | Neos\Flow\Http\Uri
$contextNode Neos\ContentRepository\Domain\Model\NodeInterface
Результат Neos\ContentRepository\Domain\Model\NodeInterface | Neos\Media\Domain\Model\AssetInterface | null
 /**
  * Resolves a shortcut node to the target. The return value can be
  *
  * * a NodeInterface instance if the target is a node or a node:// URI
  * * a string (in case the target is a plain text URI or an asset:// URI)
  * * NULL in case the shortcut cannot be resolved
  *
  * @param NodeInterface $node
  * @return NodeInterface|string|NULL
  */
 public function resolveShortcutTarget(NodeInterface $node)
 {
     $infiniteLoopPrevention = 0;
     while ($node->getNodeType()->isOfType('Neos.Neos:Shortcut') && $infiniteLoopPrevention < 50) {
         $infiniteLoopPrevention++;
         switch ($node->getProperty('targetMode')) {
             case 'selectedTarget':
                 $target = $node->getProperty('target');
                 if ($this->linkingService->hasSupportedScheme($target)) {
                     $targetObject = $this->linkingService->convertUriToObject($target, $node);
                     if ($targetObject instanceof NodeInterface) {
                         $node = $targetObject;
                     } elseif ($targetObject instanceof AssetInterface) {
                         return $this->linkingService->resolveAssetUri($target);
                     }
                 } else {
                     return $target;
                 }
                 break;
             case 'parentNode':
                 $node = $node->getParent();
                 break;
             case 'firstChildNode':
             default:
                 $childNodes = $node->getChildNodes('Neos.Neos:Document');
                 if ($childNodes !== array()) {
                     $node = reset($childNodes);
                 } else {
                     return null;
                 }
         }
     }
     return $node;
 }
 /**
  * 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 '';
 }
Пример #3
0
 /**
  * @param string|Uri $uri
  * @param NodeInterface $contextNode
  * @return NodeInterface|AssetInterface|NULL
  */
 public function convertUriToObject($uri, NodeInterface $contextNode = null)
 {
     return $this->linkingService->convertUriToObject($uri, $contextNode);
 }
 /**
  * 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();
 }