ソナタメディアエンティティにプロパティを追加したいが、それを動作させることができない。私はSonata Media Bundle 2.3を使用しており、マニュアルに従ってインストールしています。私もSonata Easy Extends Bundleでそれを拡張しました。ソナタメディアエンティティにプロパティを追加する/
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
中:
これはApplication\Sonata\MediaBundle\Entity\Media.php
のコードである
sonata_media:
class:
media: Application\Sonata\MediaBundle\Entity\Media
gallery: Application\Sonata\MediaBundle\Entity\Gallery
gallery_has_media: Application\Sonata\MediaBundle\Entity\GalleryHasMedia
私はコメントアウトそのセクションを残している場合、私は同じ結果を得ます。
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
はトリックをした: