eZ\Bundle\EzPublishCoreBundle\Imagine\AliasGenerator::getVariation PHP Method

getVariation() public method

public getVariation ( eZ\Publish\API\Repository\Values\Content\Field $field, eZ\Publish\API\Repository\Values\Content\VersionInfo $versionInfo, $variationName, array $parameters = [] )
$field eZ\Publish\API\Repository\Values\Content\Field
$versionInfo eZ\Publish\API\Repository\Values\Content\VersionInfo
$parameters array
    public function getVariation(Field $field, VersionInfo $versionInfo, $variationName, array $parameters = array())
    {
        /** @var \eZ\Publish\Core\FieldType\Image\Value $imageValue */
        $imageValue = $field->value;
        $fieldId = $field->id;
        $fieldDefIdentifier = $field->fieldDefIdentifier;
        if (!$this->supportsValue($imageValue)) {
            throw new InvalidArgumentException("Value for field #{$fieldId} ({$fieldDefIdentifier}) cannot be used for image alias generation.");
        }
        $originalPath = $imageValue->id;
        // Create the image alias only if it does not already exist.
        if ($variationName !== IORepositoryResolver::VARIATION_ORIGINAL && !$this->ioResolver->isStored($originalPath, $variationName)) {
            try {
                $originalBinary = $this->dataLoader->find($originalPath);
            } catch (NotLoadableException $e) {
                throw new SourceImageNotFoundException($originalPath, 0, $e);
            }
            if ($this->logger) {
                $this->logger->debug("Generating '{$variationName}' variation on {$originalPath}, field #{$fieldId} ({$fieldDefIdentifier})");
            }
            $this->ioResolver->store($this->applyFilter($originalBinary, $variationName), $originalPath, $variationName);
        } elseif ($this->logger) {
            $this->logger->debug("'{$variationName}' variation on {$originalPath} is already generated. Loading from cache.");
        }
        try {
            $aliasInfo = new SplFileInfo($this->ioResolver->resolve($originalPath, $variationName));
        } catch (NotResolvableException $e) {
            // If for some reason image alias cannot be resolved, throw the appropriate exception.
            throw new InvalidVariationException($variationName, 'image', 0, $e);
        }
        return new ImageVariation(array('name' => $variationName, 'fileName' => $aliasInfo->getFilename(), 'dirPath' => $aliasInfo->getPath(), 'uri' => $aliasInfo->getPathname(), 'imageId' => $imageValue->imageId));
    }

Usage Example

 /**
  * Method for parsing ezimage field.
  *
  * @param \eZ\Publish\API\Repository\Values\Content\Field $field
  * @param \eZ\Publish\API\Repository\Values\Content\Content $content
  *
  * @return string
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidVariationException
  * @throws \eZ\Publish\Core\MVC\Exception\SourceImageNotFoundException
  */
 public function ezimage(Field $field, Content $content)
 {
     if (!isset($field->value->id)) {
         return '';
     }
     $variations = $this->configResolver->getParameter('image_variations');
     $variation = 'original';
     $requestedVariation = $this->request->getCurrentRequest()->get('image');
     if (null !== $requestedVariation || in_array($requestedVariation, array_keys($variations))) {
         $variation = $requestedVariation;
     }
     try {
         return $this->imageVariationService->getVariation($field, $content->versionInfo, $variation)->uri;
     } catch (SourceImageNotFoundException $exception) {
         return '';
     }
 }
All Usage Examples Of eZ\Bundle\EzPublishCoreBundle\Imagine\AliasGenerator::getVariation