【问题标题】:Symfony 2 Can't solve ConstructSymfony 2 无法解决 Construct
【发布时间】:2017-03-17 07:04:44
【问题描述】:

我收到了这个错误

PHP Fatal error:  Uncaught exception 'Symfony\\Component\\Debug\\Exception\\ContextErrorException' with message 'Catchable Fatal Error: Argument 8 passed to Sonata\\MediaBundle\\Provider\\ImageProvider::__construct() must implement interface Imagine\\Image\\ImagineInterface, none given, called in

我的服务:

sonata.media.provider.cropper:
    class: %cmy_sonata_media.custom_class_cropper%
    tags:
        - { name: sonata.media.provider }
    arguments:
        - sonata.media.provider.cropper
        - @sonata.media.filesystem.local
        - @sonata.media.cdn.server
        - @sonata.media.generator.default
        - @sonata.media.thumbnail.format
        - ['jpg', 'png', 'jpeg']
        - ['image/jpeg', 'image/png']
        - @sonata.media.adapter.image.gd
        - @sonata.media.metadata.proxy
    calls:
        - [ setTemplates, [ { helper_thumbnail: SonataMediaBundle:Provider:thumbnail.html.twig, helper_view: SonataMediaBundle:Provider:view_image.html.twig } ] ]

我的提供者

class ImageCropperProvider extends ImageProvider
{

protected $imagineAdapter;

/**
 * @param string                                                $name
 * @param \Gaufrette\Filesystem                                 $filesystem
 * @param \Sonata\MediaBundle\CDN\CDNInterface                  $cdn
 * @param \Sonata\MediaBundle\Generator\GeneratorInterface      $pathGenerator
 * @param \Sonata\MediaBundle\Thumbnail\ThumbnailInterface      $thumbnail
 * @param array                                                 $allowedExtensions
 * @param array                                                 $allowedMimeTypes
 * @param \Imagine\Image\ImagineInterface                       $adapter
 * @param \Sonata\MediaBundle\Metadata\MetadataBuilderInterface $metadata
 */
public function __construct($name, Filesystem $filesystem, CDNInterface $cdn, GeneratorInterface $pathGenerator, ThumbnailInterface $thumbnail, array $allowedExtensions = array(), array $allowedMimeTypes = array(), ImagineInterface $adapter, MetadataBuilderInterface $metadata = null)
{

    parent::__construct($name, $filesystem, $cdn, $pathGenerator, $thumbnail, $allowedExtensions, $allowedMimeTypes, $metadata);

    $this->imagineAdapter = $adapter;
}

public function getProviderMetadata()
{
    return new Metadata($this->getName(), $this->getName().'.description', false, 'SonataMediaBundle', array('class' => 'fa fa-crop'));
}
}

我想要做的是创建相同的 ImageProvider。但我不断收到该错误: 我几乎尝试了一切。但总是以这个错误结束。 也许我错过了什么。也许我的服务配置是错误的。 但它与 ImageProvider 相同。所以应该没问题

【问题讨论】:

    标签: symfony sonata sonata-media-bundle


    【解决方案1】:

    你没有忘记你父母的构造调用中的一个参数: $adapter 应该在 $allowedMimeTypes 和 $metadata 之间

    如果您想在之后设置它,则为 null (...allowedMimeTypes, null, $metadata)

    【讨论】:

    • 这没有帮助。函数 __construct 发生错误
    【解决方案2】:

    看起来是我的 api 缓存问题。清除所有缓存后解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 2015-12-10
      • 2013-03-13
      • 1970-01-01
      • 2018-06-01
      • 2013-07-05
      相关资源
      最近更新 更多