Symfony CMF - 上传图像和PDF文件

时间:2015-09-22 14:51:07

标签: symfony symfony-cmf

我正在使用Symfony CMF Media Bundle来实现以下目标。我有几个节点可以有一个图像和一个可下载的PDF。 我已经发现setImage方法必须像这样实现:

public function setPreviewImage($previewImage)
{
    if ($previewImage === null) {
        return $this;
    }

    if (!$previewImage instanceof ImageInterface && !$previewImage instanceof UploadedFile) {
        $type = is_object($previewImage) ? get_class($previewImage) : gettype($previewImage);
        throw new \InvalidArgumentException(sprintf(
            'Image is not a valid type, "%s" given.',
            $type
        ));
    }

    if ($this->previewImage) {
        $this->previewImage->copyContentFromFile($previewImage);
    } elseif ($previewImage instanceof ImageInterface) {
        $previewImage->setName('previewImage');
        $this->previewImage = $previewImage;
    } else {
        $this->previewImage = new Image();
        $this->previewImage->copyContentFromFile($previewImage);
    }

    return $this;
}

然后在另一个论坛中,有人建议将此属性设为cascade-persistent。提示:https://github.com/symfony-cmf/BlockBundle/blob/master/Resources/config/doctrine-phpcr/ImagineBlock.phpcr.xml#L22。现在我想知道如何在我的配置中设置此选项。

我想知道的下一部分是cmf_media_file类型。有没有人在这里设法将PDF存储到PHPCR节点属性?

如果有任何帮助,我会非常感激。

1 个答案:

答案 0 :(得分:3)

我自己想通了。 对于使用注释的任何人,您必须将其设置为:

use Symfony\Cmf\Bundle\MediaBundle\Doctrine\Phpcr\Image;
use Doctrine\ODM\PHPCR\Mapping\Annotations as PHPCR;

/** 
 * @var Image
 * @PHPCR\Child(cascade="persist")
 */