Symfony Sonata Media Bundle 向用户添加图像/视频

2024-02-01

我正在尝试将 Sonata Media Bundle 集成到我的项目中。 问题是,我不明白捆绑包是如何工作的。

它在“Application”中生成了 Media、Gallery 和 GalleryHasMedia 类。它们是做什么用的?现在如何将图像字段和视频字段添加到我的用户实体? (均为复数)

问候, 新星


Media https://github.com/sonata-project/SonataMediaBundle/blob/master/Model/Media.php是保存视频/图片所有属性的实体:宽度/高度/文件路径...

实体Gallery https://github.com/sonata-project/SonataMediaBundle/blob/master/Model/Gallery.php如果您想将多个媒体链接在一起(有关同一主题的视频/图片库),则非常有用。

实体画廊有媒体 https://github.com/sonata-project/SonataMediaBundle/blob/master/Model/GalleryHasMedia.php是连接图库和媒体的实体。

SonataMedia 安装在捆绑应用程序中,因此您可以根据需要轻松扩展和更改代码。

如果您想向用户添加媒体或图库,您只需执行以下操作:

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;
}

使用控制台重新生成 getter 和 setter:

php app/console doctrine:generate:entities TestBundle:User

您将在您的用户实体中使用 SonataMedia。

UPDATE

如果你想为一个用户管理多个图像,你必须这样做:

用户实体

class UserEntity
{
    /**
     * @var Media
     *
     * @ORM\OneToMany(targetEntity="Application\Sonata\MediaBundle\Entity\Media", mappedBy="user")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="images", referencedColumnName="id")
     * })
     */
    private $images;
}

应用程序\奏鸣曲\MediaBundle\Entity\Media

class Media
{
    /**
      * @var User
      *
      * @ORM\ManyToOne(targetEntity="UserEntity", inversedBy="images")
      * @ORM\JoinColumns({
      *     @ORM\JoinColumn(name="user", referencedColumnName="id")
      * })
      */
    private $user;
} 

用户管理

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'
            )
        ))
    }
}

您可以通过更改编辑和内联属性来更改显示,link_parameters 设置表单的强制属性:背景和提供者 http://sonata-project.org/bundles/media/2-2/doc/reference/installation.html#id1

UPDATE 2

问题2

如果您想要为用户提供多个画廊,您只需执行我在之前的更新中解释的相同过程,唯一的区别是您应该创建一个新属性,例如:带有 targetEntity Gallery 的 private $imageGalleries,将 inversedBy 添加到Sonata 的 Gallery 实体,并通过仅将字段名称 images 更改为 imageGalleries 来在 SonataAdmin 类中添加新属性。

问题3

在 Sonata 之外,您应该使用 sonata_media_type 形式来处理媒体。http://sonata-project.org/bundles/media/2-0/doc/reference/form.html http://sonata-project.org/bundles/media/2-0/doc/reference/form.html因为你有一个 oneToMany 关系,它将是 sonata_media_type 的集合。

据我所知,没有任何表格可以处理画廊。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony Sonata Media Bundle 向用户添加图像/视频 的相关文章

  • 将 docker-compose.yml 中的包安装到 docker 容器中

    我是 docker 和 docker compose 的初学者 我需要你的帮助 我正在使用 docker compose 制作 PHP NGINX PostgresQL symfony 开发环境 这里是 web image nginx 1
  • 单元测试和静态方法

    阅读并学习单元测试 试图理解以下帖子 http misko hevery com 2008 12 15 static methods are death to testability 这解释了静态函数调用的困难 我不太清楚这个问题 我一直认
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att
  • 将 Hbase 与 PHP 集成 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经安装了 Hbase 现在我正在寻找一些 PHP 库来将 hbase 与 PHP 集成 我尝试了 2 个库 第一个是我尝试与 th
  • SimpleXML 返回空数组

    我正在尝试使用 Google Maps API 和 PHP SimpleXML 获取城市的纬度和经度 我尝试这样做 xml simplexml load file http maps googleapis com maps api geoc
  • 如何从命令行执行 PHP 代码?

    我想执行单个 PHP 语句 例如if function exists my func echo function exists 直接使用命令行 无需使用单独的 PHP 文件 这怎么可能 如果您要在命令行中执行 PHP 我建议您安装phpsh
  • 为什么 crontab 不执行我的 PHP 脚本?

    我已经构建了一个 php 文件来检查一些结果 因此我需要设置一个 cronjob 我设置每 30 分钟运行一次 以便发送结果 但是 我不知道为什么我的 crontab 没有每 30 分钟运行一次 这是我设置 crontab 的方法 30 p
  • 无法打开 phpmyadmin,require_once(./libraries/common.inc.php):无法打开流:没有这样的文件或目录

    当我做php usr share phpmyadmin index php 我明白了 PHP 警告 require once libraries common inc php 无法打开流 第 33 行 usr share phpmyadmi
  • imagecreatefrompng(和 imagecreatefromstring)导致不可恢复的致命错误

    当我尝试在不正确的 png 图像上使用 php gd 函数时 出现致命的 PHP 错误 这似乎是某种错误 因为根据函数文档 imagecreatefrompng 例如 return resource an image resource id
  • 单击时获取元素的 id(php、jquery、ajax、javascript)

    抱歉 这是我的第一个项目 我学到了很多东西 因此 如果有人可以帮助我 我将不胜感激 我的项目中有这个侧边栏 其中包含 rss 链接 我必须使用 ajax 因此每次用户单击任何 rss 链接时 提要都会出现在屏幕上 这是我的侧边栏代码 div
  • PHP json_encode 反斜杠和数组名称的问题

    我正在将一些 postgresql 数据转换为 PHP json encode 但我遇到了一些问题 json encode 将 BackSlash 添加到我的数据中的所有斜杠中 在描述中出现段落标记的结束 我认为是因为反斜杠问题 我不希望我
  • 判断是否存在多对多记录组合

    这似乎是一个常见的任务 有一个简单的解决方案 但我在 StackOverflow 和 Google 上都空手而归 场景是这样的 我有两个共享多对多关系的表 A 和 B 因此 我有一个带有外键的表 A B 它映射 A 到 B 记录关系 标准的
  • 提交表单时显示警告框

    所以我有这两页 pageOne php and pageTwo php 表格在pageOne php
  • 获取特定 $_POST 数组的值

    name qty foreach POST as items gt value check qty gt 1 echo key gt value br 如何仅显示其值为 qty1 gt value qty2 gt value gt 0 的项
  • 搜索多个表 (SQL)

    我需要能够有一个 SQL 查询来使用简单的搜索来搜索我的数据库 这是我的表格现在的样子 Table artists id name Table albums id artistID name Table songs id albumID n
  • xampp openssl 调用 openssl_pkey_new() 时出错;

    所以我试图让 openssl 在我的 Windows 安装的 xampp 1 7 3 上工作 它是用 OpenSSL 0 9 8l 构建的 这只是我第二次在 amp 安装上安装 openssl 但第一次进展顺利 这是在同一台机器上的 wam
  • Laravel 中的 SQL 运算符是什么?

    我正在查看 Laravel 的源代码 发现了很多 Eloquent 的 SQL 运算符 我想知道其中一些是什么以及如何使用它们 不幸的是我没有找到任何文档 这是我找到的运营商vendor laravel framework src Illu
  • 使用 google 检查 url,安全 = 活动

    如何检查 url 是否被 google 显示 Example https www google com search q redtubex xxx safe active Code input http www example com in
  • PHP runkit_function_rename 不起作用?

    这段代码不起作用 为什么不 我真正想要的是这个 我正在使用一个具有功能的系统 当我在本地主机上时 我希望该函数做一些不同的事情 我想用自己的东西覆盖该函数 也欢迎所有替代方案 您是否安装了 PECL 扩展 http www php net
  • Jpgraph:如何在php中设置组条形柱形图的标签

    这是我的 jpgraph 演示代码

随机推荐