Symfony 2 无法解决 Construct
Symfony 2 Can't solve Construct
我遇到了这个错误
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 相同。所以应该没问题
你是不是忘记了 parent 的构造调用中的一个参数:
$adapter 应该在 $allowedMimeTypes 和 $metadata
之间
如果您想之后再设置它,则为 null (...allowedMimeTypes, null, $metadata)
看来这是我的 api 缓存问题。清除所有缓存后解决。
我遇到了这个错误
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 相同。所以应该没问题
你是不是忘记了 parent 的构造调用中的一个参数: $adapter 应该在 $allowedMimeTypes 和 $metadata
之间如果您想之后再设置它,则为 null (...allowedMimeTypes, null, $metadata)
看来这是我的 api 缓存问题。清除所有缓存后解决。