nov*_*.cp 7 php symfony sonata-media-bundle sonata
我正在尝试将Sonata Media Bundle集成到我的项目中.问题是,我不明白捆绑是如何工作的.
它在"应用程序"中生成了Media,Gallery和GalleryHasMedia类.它们适用于什么?我现在如何向我的用户实体添加图像字段和视频字段?(复数)
问候,新星
Hyp*_*peR 21
媒体是保存视频/图片所有属性的实体:宽度/高度/文件路径...
如果您想要将多个媒体链接在一起(有关同一主题的视频/图片库),实体库非常有用.
Entity GalleryHasMedia是链接Gallery和Media的实体.
SonataMedia安装在Bundle应用程序中,因此您可以根据需要轻松扩展和更改代码.
如果您想向用户添加媒体或图库,您只需执行以下操作:
class UserEntity
{
/**
* @var Media
*
* @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="picture", referencedColumnName="id")
* })
*/
private $picture;
/**
* @var Gallery
*
* @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Gallery")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="gallery", referencedColumnName="id")
* })
*/
private $gallery;
}
Run Code Online (Sandbox Code Playgroud)
使用控制台重新生成getter和setter:
php app/console doctrine:generate:entities TestBundle:User
Run Code Online (Sandbox Code Playgroud)
您将在您的用户实体中使用SonataMedia.
UPDATE
如果要为用户管理多个图像,则必须执行以下操作:
UserEntity
class UserEntity
{
/**
* @var Media
*
* @ORM\OneToMany(targetEntity="Application\Sonata\MediaBundle\Entity\Media", mappedBy="user")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="images", referencedColumnName="id")
* })
*/
private $images;
}
Run Code Online (Sandbox Code Playgroud)
应用\索纳塔\ MediaBundle \实体\媒体
class Media
{
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="UserEntity", inversedBy="images")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user", referencedColumnName="id")
* })
*/
private $user;
}
Run Code Online (Sandbox Code Playgroud)
UserAdmin
class UserAdmin
{
public function configureFormFields(FormMapper $formMapper)
{
$formMapper->add('images', 'sonata_type_collection', array(), array(
'edit' => 'inline',
'inline' => 'table',
'link_parameters' => array(
'context' => 'images',
'provider' => 'sonata.media.provider.image'
)
))
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过更改编辑和内联属性来更改显示,link_parameters设置表单的强制属性:context和provider
更新2
问题2
如果您想为用户创建多个图库,您只需执行我在上一次更新中说明的相同过程,唯一的区别是您应该创建一个新属性,例如:private $ imageGalleries with targetEntity Gallery,添加inversedBy in Sonata的Gallery Entity并在SonataAdmin类中添加新属性,只需将字段名称图像更改为imageGalleries即可.
问题3
在Sonata之外,您应该使用sonata_media_type表单来处理Media. http://sonata-project.org/bundles/media/2-0/doc/reference/form.html 因为你有一个oneToMany关系,它将是sonata_media_type的集合.
我知道没有办法处理画廊.
| 归档时间: |
|
| 查看次数: |
10155 次 |
| 最近记录: |