【发布时间】:2016-12-02 15:22:22
【问题描述】:
我想向 Sonata Media 实体添加属性,但我无法让它工作。我正在使用 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
同样,如果我将该部分注释掉,我会得到相同的结果。
更新:当我创建添加属性的自定义迁移时,当我扩展 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 时,我收到一个错误)。
【问题讨论】:
标签: symfony doctrine-orm sonata-admin sonata sonata-media-bundle