首页 > 解决方案 > 使用 SonataMediaBundle,我如何找出可用的媒体提供商?

问题描述

我希望在使用 Symfony 4.3.9 的基于 Sonata 的 CMS 中创建一个夹具图像。我有以下逻辑AddMediaFixtures.php

public function load(ObjectManager $manager)
{
    $defaultImage = new Media();
    $fileLocation = $this->parameterBag->get('kernel.project_dir') . '/public/static/img/fallbacks/1600_828.jpg';

    $defaultImage->setBinaryContent(file_get_contents($fileLocation));
    $defaultImage->setName('fallback.jpg');

    $this->objectManager->persist($defaultImage);
    $this->objectManager->flush();
}

...当我运行时doctrine:fixtures:load,我得到以下输出:

提供者名称不能为空,您是否忘记在您的 Media 对象中调用 setProviderName()?

所以我想我应该打电话给$defaultImage->setProviderName('MyProviderName');......但我不知道我会去哪里找到可行的提供者名称列表。我试过查看我的.env文件,没有发现任何明显的东西。

标签: phpsymfonydoctrinefixturessonata

解决方案


我找到了。

只需在内部尝试一个值 -任何值 -setProviderName()并再次运行夹具生成,我就会得到这个更有用的消息:

无法检索名为“image”的提供程序。可用的提供程序是“sonata.media.provider.image”、“sonata.media.provider.file”、“sonata.media.provider.youtube”、“sonata.media.provider.dailymotion”、“sonata.media.provider” .vimeo”。

这样就解决了我的问题。


推荐阅读