關於如何編寫自定義提供程序的官方文檔中有一個example,但它不起作用。Sonata Media Bundle - 如何編寫自定義提供程序?
我的問題是:編寫自定義提供程序的最佳方式是什麼,特別是如何編寫和註冊提供程序作爲新服務?
當我嘗試從文檔中使用this code時,出現有關參數類型的錯誤。 什麼意思是空的論點?
謝謝。
關於如何編寫自定義提供程序的官方文檔中有一個example,但它不起作用。Sonata Media Bundle - 如何編寫自定義提供程序?
我的問題是:編寫自定義提供程序的最佳方式是什麼,特別是如何編寫和註冊提供程序作爲新服務?
當我嘗試從文檔中使用this code時,出現有關參數類型的錯誤。 什麼意思是空的論點?
謝謝。
經過一番調查後,下面的代碼工作:
註冊商作爲服務:
// src/Application/Sonata/MediaBundle/Resources/config/services.yml
parameters:
application_sonata_media.custom_class: Application\Sonata\MediaBundle\Provider\CustomProvider
services:
sonata.media.provider.custom:
class: %application_sonata_media.custom_class%
tags:
- { name: sonata.media.provider }
arguments:
- sonata.media.provider.custom
- @sonata.media.filesystem.local
- @sonata.media.cdn.server
- @sonata.media.generator.default
- @sonata.media.thumbnail.format
自定義提供代碼:
// src/Application/Sonata/MediaBundle/Provider/CustomProvider.php
<?php
namespace Application\Sonata\MediaBundle\Provider;
use Sonata\MediaBundle\Model\MediaInterface;
use Sonata\MediaBundle\Provider\FileProvider;
use Symfony\Component\Form\FormBuilder;
use Symfony\Component\HttpFoundation\File\File;
/**
* Class CustomProvider
* @package Application\Sonata\MediaBundle\Provider
*/
class CustomProvider extends FileProvider
{
/**
* @param MediaInterface $media
*/
protected function doTransform(MediaInterface $media)
{
// ...
}
/**
* {@inheritdoc}
*/
public function generatePublicUrl(MediaInterface $media, $format)
{
// new logic
}
/**
* {@inheritdoc}
*/
public function postPersist(MediaInterface $media)
{
}
/**
* {@inheritdoc}
*/
public function postUpdate(MediaInterface $media)
{
}
}
更新索納塔配置:
// app/config/sonata/sonata_media.yml
sonata_media:
...
product:
providers:
- sonata.media.provider.image
- sonata.media.provider.custom
formats:
small: { width: 40 , quality: 100}
...
而且我還將DI擴展設置爲自動加載services.yml
我做了一個PR來更新過時的文檔。
我不能得到這個工作,直到我指定的服務完全按照一個我一直在重寫(sonata.media.provider.image)
嗨@borN_free,我想這段代碼,但是當我嘗試上傳一個文件時,一個get,**「這個值不應該爲null,這個值不應該是空白的。」** 3次,所有代碼都加上' - ['pdf' ] - ['application/pdf','application/x-pdf']'在參數結尾處。任何想法來解決它?示例代碼可能不完整?謝謝 –
已解決[here](http://stackoverflow.com/a/35833861/5763965) –