getPublicUrls() returns 一个空数组

getPublicUrls() returns an empty array

我的 Symfony 应用程序中有一个媒体对象存储库,其中包含一张图片。 (这张图片是使用 Sonata Media Bundle 上传的。)在我的控制器中使用以下代码 ...

    $images = $repository->findAll();

    foreach ($images as $image) {
        /* @var $image Media */
        $urls = $image->getPublicUrls();
        $output[] = [
            'name' => $image->getName(),
            'something' => $urls,
        ];
    }

... 结果是一个空数组,我希望在其中至少看到一个面向 public 的 url。

我配置错了什么?

我最后做了以下事情:

    $images = $repository->findAll();

    /* @var $imageProvider ImageProvider */
    $imageProvider = $this->get('sonata.media.provider.image');

    foreach ($images as $image) {
        /* @var $image Media */
        $output[] = [
            'name' => $image->getName(),
            'url' => $imageProvider->generatePublicUrl($image, 'reference'), 
        ];
    }

这并没有真正回答我最初的问题,但它实现了我想要的目标,因为它为我的图像提供了一个可公开访问的 url。

据我在 Sonata\MediaBundle\Model\Media 中所见,没有这样的方法 getPublicUrls,如果我是对的,这是您的自定义方法,您必须在保存媒体之前填充。如果我就在这里,你可以在图像提供者中完成:)