Ich möchte der Sonata Media-Entität Eigenschaften hinzufügen, aber ich kann sie einfach nicht zum Laufen bringen. Ich verwende das Sonata Media Bundle 2.3 und habe es gemäß dem Handbuch installiert. Ich habe es auch mit dem Sonata Easy Extends Bundle erweitert.Hinzufügen von Eigenschaften zu/Erweitern von Sonata Media entity
Wenn ich eine Eigenschaft zu Application\Sonata\MediaBundle\Entity\Media
hinzufüge, wird es einfach nicht abgeholt, wenn ich doctrine:generate:diff
ausführen ('Keine Änderungen in Ihrer Mapping-Information gefunden.').
Das Überschreiben der Medienklasse in wird auch keinen Unterschied machen.
Dies ist der Code in 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;
}
}
Und in 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
Noch einmal, ich das gleiche Ergebnis, wenn ich diesen Abschnitt kommentiert auslassen.
UPDATE: Wenn ich eine benutzerdefinierte Migration erstellen, die die Eigenschaft hinzufügt, wenn ich die MediaAdmin verlängern, wird das test
Feld nicht angezeigt, wenn ich auf das Bild bearbeiten Seite: So
// 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]);
}
}
es scheint, dass Sonata das erweiterte Medienpaket ignoriert (was nicht der Fall ist, denn wenn ich Application\Sonata\MediaBundle\Entity\Media.php
entferne, erhalte ich einen Fehler).