Symfony 2 无法解决 Construct

Posted

技术标签:

【中文标题】Symfony 2 无法解决 Construct【英文标题】:Symfony 2 Can't solve 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 相同。所以应该没问题

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

这没有帮助。函数 __construct 发生错误【参考方案2】:

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

【讨论】:

以上是关于Symfony 2 无法解决 Construct的主要内容,如果未能解决你的问题,请参考以下文章

Symfony Apache 2:无法创建缓存目录 /var/cache

无法更新 symfony 食谱

无法读取Dotenv.php中的“../.dev.env”环境文件:symfony

如何解决 Symfony2 中的“无法创建“%kernel.root_dir%/../web/uploads”目录”错误

无法找到模板symfony3

无法安装探查器symfony flex