我的Sonata Media捆绑包有问题 . 我在服务器(本地)上传的图像不会显示(缩略图丢失) . 我检查了路径,这一切都是正确的 . 我上传的所有图像都会传输到目录 /web/ uploads/media
.
检查截图:
Config File:
sonata_media:
# if you don't use default namespace configuration
#class:
# media: MyVendor\MediaBundle\Entity\Media
# gallery: MyVendor\MediaBundle\Entity\Gallery
# gallery_has_media: MyVendor\MediaBundle\Entity\GalleryHasMedia
default_context: default
db_driver: doctrine_orm # or doctrine_mongodb, doctrine_phpcr
contexts:
default: # the default context is mandatory
providers:
- sonata.media.provider.dailymotion
- sonata.media.provider.youtube
- sonata.media.provider.image
- sonata.media.provider.file
formats:
preview: { width: 100, quality: 100}
small: { width: 100 , quality: 70}
big: { width: 500 , quality: 70}
cdn:
server:
path: uploads/media
filesystem:
local:
directory: %kernel.root_dir%/../web/uploads/media
create: false
sonata_notification:
backend: sonata.notification.backend.runtime
sonata_notification:
admin:
enabled: false
我在Sonata管理软件包中使用Media捆绑包这样做,并且所有工作都很好,但只是没有渲染缩略图 . 我阅读Media BUndle doc Helper部分,但不明白 .
在我的ArticleAdmin控制器中,我添加了这样的文件:
/**
* Configure Form Fields
*
* Fields to be shown on create/edit forms
*/
protected function configureFormFields(FormMapper $formMapper)
{
$link_parameters = array();
if ($this->hasParentFieldDescription()) {
$link_parameters = $this->getParentFieldDescription()->getOption('link_parameters', array());
}
if ($this->hasRequest()) {
$context = $this->getRequest()->get('context', null);
if (null !== $context) {
$link_parameters['context'] = $context;
}
}
$formMapper->add('media', 'sonata_type_model_list', array('required' => false), array(
'link_parameters' => $link_parameters
))
}
有解决方案吗
更新:
在我的日志文件中,我发现了这个:
[2015-01-22 15:28:22] request.ERROR:未捕获的PHP异常Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException:“找不到”GET / admin / sonata / media / media / uploads / media /的路由默认/ 0001/01 / thumb_1_admin.jpeg“”在C:\ xampp \ htdocs \ Symfony \ app \ cache \ dev \ classes.php第2017行{“exception”:“[object](Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException(代码:0):在C:\ xampp \ htdocs \ Symfony \ app \中找不到\“GET /admin/sonata/media/media/uploads/media/default/0001/01/thumb_1_admin.jpeg \”的路由cache \ dev \ classes.php:2017,Symfony \ Component \ Routing \ Exception \ ResourceNotFoundException(code:0):at C:\ xampp \ htdocs \ Symfony \ app \ cache \ dev \ appDevUrlMatcher.php:521)“} [ ]
4 回答
您的链接应该是'/ uploads / media / ....'而不是'upload / media / ...'
在配置文件中,进行更改
cdn:server:path:uploads / media
至
cdn:server:path:/ uploads / media
希望它有助于解决您的问题 .
除了Stiff Roy的回答,您可以将虚拟主机根目录设置为Symfony / web(在您的情况下) .
所以当你在
http://localhost/app_dev.php/admin/sonata/media/media/list
上时你的图像加载为http://localhost/uploads/media/default/0001/01/thumb.jpg
错误
"No route found for "GET /admin/sonata/media/media/uploads/media/default/0001/01/thumb_1_admin.jpeg""
表示它试图通过控制器而不是直接访问来加载图像 . 有关设置env的其他信息,请参见here或here(PHP Storm) .需要更改config.yml中的路径
好的,所以我这样解决了问题:
并在控制台:$ php app / console server:start
symphony环境app_dev不使用sonata媒体包 .
干杯