1

我已经安装了 Sonata Admin、Media、Classification 和其他几个没有任何问题。我有一个名为任务的实体,我需要能够将一些文件附加到我的任务中。所以我的任务实体如下所示:

class Task {
     //...
     /**
      * @ORM\OneToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media")
      * @ORM\JoinColumn(name="attachment_id", referencedColumnName="id")
      **/
     protected $attachment;
     //... 
}

在我的 TaskAdmin.php 我有

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        //...
        ->add('attachment', 'sonata_media_type', array(
            'provider' => 'sonata.media.provider.image',
            'context'  => 'default'
        ));
}

这是 MediaBUndle 的 config.yml 设置:

sonata_media:

default_context: default
db_driver: doctrine_orm # or doctrine_mongodb, doctrine_phpcr
contexts:
    default:  # the default context is mandatory
        providers:
            - sonata.media.provider.dailymotion
            - sonata.media.provider.youtube
            - sonata.media.provider.image
            - sonata.media.provider.file
        formats:
            small: { width: 100 , quality: 70}
            big:   { width: 500 , quality: 70}
cdn:
    server:
        path: /uploads/media # http://media.sonata-project.org/
filesystem:
    local:
        directory:  %kernel.root_dir%/../web/uploads/media
        create:     false

现在,当我尝试创建一个新任务(http://myweb.dev/app_dev.php/admin/core/task/create )时,我收到以下错误:

Neither the property "attachment" nor one of the methods "getAttachment()", "attachment()", "isAttachment()", "hasAttachment()", "__get()" exist and have public access in class "CoreBundle\Entity\Task".

知道我做错了什么吗?提前致谢。


类似问题

SonataUserBundle - 属性和方法都不存在

4

1 回答 1

3

您的任务实体必须有一个带有 getter 和 setter 的附件字段。例如:

protected $attachment;

public function getAttachment()
{
    return $this->attachment;
}
于 2015-04-30T13:33:57.343 回答