Neos\ContentRepository\Domain\Utility\NodePaths::explodeContextPath PHP Method

explodeContextPath() public static method

Splits the given context path into relevant information, which results in an array with keys: "nodePath", "workspaceName", "dimensions"
See also: generateContextPath()
public static explodeContextPath ( string $contextPath ) : array
$contextPath string a context path including workspace and/or dimension information.
return array split information from the context path
    public static function explodeContextPath($contextPath)
    {
        preg_match(NodeInterface::MATCH_PATTERN_CONTEXTPATH, $contextPath, $matches);
        if (!isset($matches['NodePath'])) {
            throw new \InvalidArgumentException('The given string was not a valid contextPath.', 1431281250);
        }
        $nodePath = $matches['NodePath'];
        $workspaceName = isset($matches['WorkspaceName']) && $matches['WorkspaceName'] !== '' ? $matches['WorkspaceName'] : 'live';
        $dimensions = isset($matches['Dimensions']) ? static::parseDimensionValueStringToArray($matches['Dimensions']) : array();
        return array('nodePath' => $nodePath, 'workspaceName' => $workspaceName, 'dimensions' => $dimensions);
    }

Usage Example

コード例 #1
0
 /**
  * Add the current node and all parent identifiers to be used for cache entry tagging
  *
  * @Flow\Before("method(Neos\Flow\Mvc\Routing\RouterCachingService->extractUuids())")
  * @param JoinPointInterface $joinPoint The current join point
  * @return void
  */
 public function addCurrentNodeIdentifier(JoinPointInterface $joinPoint)
 {
     $values = $joinPoint->getMethodArgument('values');
     if (!isset($values['node']) || strpos($values['node'], '@') === false) {
         return;
     }
     // Build context explicitly without authorization checks because the security context isn't available yet
     // anyway and any Entity Privilege targeted on Workspace would fail at this point:
     $this->securityContext->withoutAuthorizationChecks(function () use($joinPoint, $values) {
         $contextPathPieces = NodePaths::explodeContextPath($values['node']);
         $context = $this->contextFactory->create(['workspaceName' => $contextPathPieces['workspaceName'], 'dimensions' => $contextPathPieces['dimensions'], 'invisibleContentShown' => true]);
         $node = $context->getNode($contextPathPieces['nodePath']);
         if (!$node instanceof NodeInterface) {
             return;
         }
         $values['node-identifier'] = $node->getIdentifier();
         $node = $node->getParent();
         $values['node-parent-identifier'] = array();
         while ($node !== null) {
             $values['node-parent-identifier'][] = $node->getIdentifier();
             $node = $node->getParent();
         }
         $joinPoint->setMethodArgument('values', $values);
     });
 }
All Usage Examples Of Neos\ContentRepository\Domain\Utility\NodePaths::explodeContextPath