vendor/shopware/storefront/Page/Cms/DefaultMediaResolver.php line 44

  1. <?php declare(strict_types=1);
  2. namespace Shopware\Storefront\Page\Cms;
  3. use Shopware\Core\Content\Media\Cms\AbstractDefaultMediaResolver;
  4. use Shopware\Core\Content\Media\MediaEntity;
  5. use Shopware\Core\Framework\Adapter\Translation\Translator;
  6. use Shopware\Core\Framework\Log\Package;
  7. use Symfony\Component\Asset\Packages;
  8. #[Package('content')]
  9. class DefaultMediaResolver extends AbstractDefaultMediaResolver
  10. {
  11.     private const CMS_SNIPPET_DEFAULT_MEDIA_NAME 'component.cms.defaultMedia';
  12.     /**
  13.      * @internal
  14.      */
  15.     public function __construct(
  16.         private readonly AbstractDefaultMediaResolver $decorated,
  17.         private readonly Translator $translator,
  18.         private readonly Packages $packages
  19.     ) {
  20.     }
  21.     public function getDecorated(): AbstractDefaultMediaResolver
  22.     {
  23.         return $this->decorated;
  24.     }
  25.     public function getDefaultCmsMediaEntity(string $mediaAssetFilePathstring $snippetPath self::CMS_SNIPPET_DEFAULT_MEDIA_NAME): ?MediaEntity
  26.     {
  27.         $media $this->decorated->getDefaultCmsMediaEntity($mediaAssetFilePath);
  28.         if (!$media) {
  29.             return null;
  30.         }
  31.         $package $this->packages->getPackage('asset');
  32.         $snippetName $snippetPath '.' $media->getFileName();
  33.         // add translations to the media entity with a given snippet path
  34.         $media->setTranslated([
  35.             'title' => $this->translator->trans($snippetName '.title'),
  36.             'alt' => $this->translator->trans($snippetName '.alt'),
  37.         ]);
  38.         // add the asset url
  39.         $media->setUrl($package->getUrl('/bundles/' $mediaAssetFilePath));
  40.         return $media;
  41.     }
  42. }