我想添加属性到索纳塔媒体实体,但我无法让它工作。我正在使用Sonata Media Bundle 2.3,并按照手册进行安装。我还用Sonata Easy Extends Bundle扩展了它。将属性添加到/扩展索纳塔媒体实体
当我将属性添加到Application\Sonata\MediaBundle\Entity\Media
时,我运行doctrine:generate:diff
('没有在您的映射信息中检测到更改')时,它不会被拾取。
覆盖config.yml
中的媒体类别也不会有什么不同。
这是Application\Sonata\MediaBundle\Entity\Media.php
代码:
<?php
namespace Application\Sonata\MediaBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Sonata\MediaBundle\Entity\BaseMedia as BaseMedia;
/**
* @ORM\Entity
*/
class Media extends BaseMedia
{
/**
* @var integer $id
*/
protected $id;
/**
* @ORM\Column(type="string", nullable=true)
*/
protected $test;
/**
* @return mixed
*/
public function getTest()
{
return $this->test;
}
/**
* @param mixed $test
*/
public function setTest($test)
{
$this->test = $test;
}
/**
* Get id
*
* @return integer $id
*/
public function getId()
{
return $this->id;
}
}
而且在config.yml
:
sonata_media:
class:
media: Application\Sonata\MediaBundle\Entity\Media
gallery: Application\Sonata\MediaBundle\Entity\Gallery
gallery_has_media: Application\Sonata\MediaBundle\Entity\GalleryHasMedia
同样,我得到同样的结果,如果我离开那部分注释掉。
UPDATE:当我创建一个自定义的迁移,增加了属性,当我延长MediaAdmin,该test
场不会出现,当我去到图像编辑页面:
// Application\Sonata\MediaBundle\Admin\MediaAdmin.php
<?php
namespace Sonata\MediaBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Show\ShowMapper;
class MediaAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name', null, ['required' => false])
->add('enabled', null, ['required' => false])
->add('authorName', null, ['required' => false])
->add('cdnIsFlushable', null, ['required' => false])
->add('description', null, ['required' => false])
->add('copyright', null, ['required' => false])
->add('test', null, ['required' => false])
->add('binaryContent', 'file', ['required' => false]);
}
}
所以似乎Sonata忽略了扩展媒体包(事实并非如此,因为当我删除Application\Sonata\MediaBundle\Entity\Media.php
时,出现错误)。