如何获得媒体

How to get media

我正在尝试使用以下代码访问文件 /component/product/card/box-standard.html.twig 中的 product.media 属性:

{{ dump(product) }}

但是 product.media returns 的值 null.

封面图片如预期可用 product.cover.media,只有媒体 属性 没有结果。

我是否必须以某种方式在加载媒体的这个 twig 文件中启用它?目标是在图片类别页面中创建图片轮播以显示多张图片,而不仅仅是封面图片。

默认情况下,媒体关联在产品列表中不可用,可能是因为只需要封面图片,加载不必要的东西会降低性能。

在您的情况下,您需要加载该字段。

可以通过以下方法实现:

  1. Create a new subscriberProductListingCriteriaEvent
  2. 添加媒体协会

订阅者看起来类似于:

class AddFieldsToProductListingSubscriber implements EventSubscriberInterface {

    public static function getSubscribedEvents(): array
    {
        return [
            ProductListingCriteriaEvent::class => 'handleRequest',
        ];
    }


    public function handleRequest(ProductListingCriteriaEvent $event): void
    {
        $event
            ->getCriteria()
            ->addAssociation('media');
    }
}

现在

{{ dump(product.media) }}

将不包含产品媒体。