Sonata Media 엔티티에 속성을 추가하고 싶지만 작동시키지 못합니다. 나는 Sonata Media Bundle 2.3을 사용하고 있으며 매뉴얼에 따라 설치했다. 나는 또한 Sonata Easy Extends Bundle으로 그것을 확장했다.Sonata Media 엔티티에 속성 추가/확장
Application\Sonata\MediaBundle\Entity\Media
에 속성을 추가하면 doctrine:generate:diff
('매핑 정보에 변경된 사항이 없습니다.')을 실행했을 때 속성이 선택되지 않습니다.
config.yml
의 미디어 클래스를 재정의해도 차이가 없습니다.
<?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
, 나는 같은 결과를 얻을 수
이
는Application\Sonata\MediaBundle\Entity\Media.php
의 코드입니다.
UPDATE : 그래서
// 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]);
}
}
: 나는 속성을 추가하는 사용자 지정 마이그레이션을 만들 때 나는 MediaAdmin을 확장 할 때 이미지 편집 페이지에 갈 때,의 test
필드는 표시되지 않습니다 소나타가 확장 된 미디어 번들을 무시하고있는 것으로 보입니다 (이 경우는 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\Table(name="media__media")
* @ORM\Entity
*/
class Media extends BaseMedia
간단한 php app/console doctrine:schema:update --force
을 결국 속임수를 썼는지 : 나는 Application/Sonata/MediaBundle/Resources/config/doctrine
폴더를 제거하고 다음과 같은 미디어의 실체에 주석을했다처럼