<?php
namespace App\Classes\LinkGenerator;
use InvalidArgumentException;
use Pimcore\Bundle\EcommerceFrameworkBundle\Model\ProductInterface;
use Pimcore\Model\DataObject\ClassDefinition\LinkGeneratorInterface;
use Pimcore\Model\DataObject\Concrete;
use App\Classes\Tools\ForceInheritance;
use App\Classes\Tools\Text;
class ProductLinkGenerator extends AbstractProductLinkGenerator implements LinkGeneratorInterface
{
public function generate(Concrete $object, array $params = []): string
{
if (!$object instanceof ProductInterface) {
throw new InvalidArgumentException('Given object is no Product');
}
return $this->doGenerate($object, $params);
}
protected function doGenerate($object, $params): string
{
$options = array_merge(
$params,
[
'name' => Text::toUrl($object->getOSName() ? $object->getOSName() : 'product'),
'id' => $object->getId(),
'division' => $object->getDivision(),
]
);
return ForceInheritance::run(function () use ($object, $options) {
return $this->pimcoreUrl->__invoke(
$options,
'product-single',
true
);
});
}
}