gpt4 book ai didi

symfony - 奏鸣曲管理员 sonata_type_collection

转载 作者:行者123 更新时间:2023-12-03 23:16:39 24 4
gpt4 key购买 nike

我对 Sonata 管理表单有疑问...

我想在专辑中插入音乐,位置...

我的问题是当我创建一个专辑时...我可以添加很多我想要的 AlbumHasMusic...但是当我提交我的表格时...每个 AlbumHasMusic 都有一个空专辑,而音乐和位置都可以。

如何将专辑 ID 放入每个 AlbumHasMusic 中?

这些是我的实体:

专辑:

/**
* Album
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\AlbumRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Album
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="titre", type="string", length=255)
*/
private $titre;

/**
* @var UploadedFile
*/
private $cover;

/**
* @var String
*
* @ORM\Column(name="filename", type="string", length=255, nullable=true)
*/
private $covername;

/**
*
* @var Array<AlbumHasMusiques>
* @ORM\OneToMany(targetEntity="AppBundle\Entity\AlbumHasMusiques", mappedBy="album", cascade={"persist"})
*/
private $albumHasMusiques;

/**
* @var \DateTime
*
* @ORM\Column(name="updated", type="time", nullable=true)
*/
private $updated;
}

AlbumHasMusic:

/**
* AlbumHasMusiques
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\AlbumHasMusiquesRepository")
*/
class AlbumHasMusiques
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var Album
*
* @ORM\ManyToOne(targetEntity="Album")
* @ORM\JoinColumn(name="album_id", referencedColumnName="id")
*/
private $album;

/**
* @var Musique
*
* @ORM\ManyToOne(targetEntity="Musique")
* @ORM\JoinColumn(name="musique_id", referencedColumnName="id")
*/
private $musique;

/**
* @var integer
*
* @ORM\Column(name="position", type="integer")
*/
private $position;

}

音乐:

/**
* Musique
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\MusiqueRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Musique
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var \DateTime
*
* @ORM\Column(name="duree", type="time", nullable=true)
*/
private $duree;

/**
* @var \DateTime
*
* @ORM\Column(name="updated", type="time", nullable=true)
*/
private $updated;

/**
* @var string
*/
private $file;

/**
* @var String
*
* @ORM\Column(name="filename", type="string", length=255, nullable=true)
*/
private $filename;

/**
* @var string
*
* @ORM\Column(name="titre", type="string", length=255, nullable=true)
*/
private $titre;

/**
* @var Genre
*
* @ORM\ManyToOne(targetEntity="Genre", inversedBy="musiques")
* @ORM\JoinColumn(name="genre_id", referencedColumnName="id", nullable=false)
*/
private $genre;

/**
* @ORM\ManyToMany(targetEntity="MotClef", inversedBy="musiques")
*/
private $motsClef;
}

我想做一些像 Sonata Media Bundle 的画廊和媒体。

这是我的AlbumAdmin:

class AlbumAdmin extends Admin
{
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('titre')
->add('covername')
->add('updated')
->add('albumHasMusiques', 'sonata_type_collection', array(
'cascade_validation' => true,
'by_reference' => false,
), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'link_parameters' => array('context' => 'default'),
'admin_code' => 'app.admin.album_has_musiques',
)
)
;
}

/**
* {@inheritdoc}
*/
public function prePersist($album)
{
$album->setAlbumHasMusiques($album->getAlbumHasMusiques());
}

/**
* {@inheritdoc}
*/
public function preUpdate($album)
{
$album->setAlbumHasMusiques($album->getAlbumHasMusiques());
}
}

和 AlbumHasMusicAdmin :

class AlbumHasMusiquesAdmin extends Admin
{
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('musique', 'sonata_type_model_list', array('required' => true), array(
'link_parameters' => ['context' => 'default'],
))
->add('position', 'hidden')
;
}
}

你有什么想法吗?

最佳答案

我认为您在专辑实体的 addAlbumHasMusiques() 函数中遗漏了一些内容:确保您是这样写的:

 public function addAlbumHasMusiques(\AppBundle\Entity\AlbumHasMusiques $albumHasMusiques) {
$albumHasMusiques->setAlbum($this); // The important line !!!!
$this->albumHasMusiques[] = $albumHasMusiques;

return $this;
}

关于symfony - 奏鸣曲管理员 sonata_type_collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28287890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com