gpt4 book ai didi

symfony - Sonata Media Bundle - 如何编写自定义提供程序?

转载 作者:行者123 更新时间:2023-12-02 10:12:37 25 4
gpt4 key购买 nike

有一个example官方文档中介绍了如何编写自定义提供程序,但它不起作用。

我的问题是:编写自定义提供程序的最佳方法是什么,特别是如何编写提供程序并将其注册为新服务​​?

当我尝试使用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更新过时的文档。

关于symfony - Sonata Media Bundle - 如何编写自定义提供程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com