我想添加屬性到索納塔媒體實體,但我無法讓它工作。我正在使用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
時,出現錯誤)。