Warning: You are browsing the documentation from version 4 to 10 of Pimcore.
Please visit https://pimcore.com/docs/platform/ for the latest versions of Pimcore.
Version:
Edit on GitHub
Preview Generator
Summary
Preview Generators provide services to get more control over the preview tab. They provide a UI component to pass additional parameters to a URL-generator.
Providers need to implement: \Pimcore\Model\DataObject\ClassDefinition\PreviewGeneratorInterface
Parameters returned in the getParams
method will be rendered as a select box.
Whatever the user chooses will be passed to the generatePreviewUrl
method.
Provide a Preview Generator within the Class settings:
Sample PreviewProvider Implementation
namespace App\Service\PreviewParamProvider;
class ProductPreviewParamProvider implements \Pimcore\Model\DataObject\ClassDefinition\PreviewGeneratorInterface
{
protected $productLinkGenerator;
public function __construct(\App\Website\LinkGenerator\ProductLinkGenerator $productLinkGenerator)
{
$this->productLinkGenerator = $productLinkGenerator;
}
/**
* @param \Pimcore\Model\DataObject\Concrete $object
* @param array $params
* @return string
*/
public function generatePreviewUrl(\Pimcore\Model\DataObject\Concrete $object, array $params): string {
$additionalParams = [];
foreach($this->getPreviewConfig($object) as $paramStore) {
$paramName = $paramStore['name'];
if($paramValue = $params[$paramName]) {
$additionalParams[$paramName] = $paramValue;
}
}
return $this->productLinkGenerator->generate($object, $additionalParams);
}
/**
* @param \Pimcore\Model\DataObject\Concrete $object
*
* @return array
*/
public function getPreviewConfig(\Pimcore\Model\DataObject\Concrete $object): array {
return [
[
'name' => '_locale',
'label' => 'Locale',
'values' => [
'English' => 'en',
'German' => 'de'
]
],
[
'name' => 'otherParam',
'label' => 'Other',
'values' => [
'Label Text' => 'value',
'Option #2' => 2,
'Custom Option' => 'custom'
]
]
];
}
}