seraph/media-bundle

Media Bundle 是一个管理多媒体库的解决方案。

安装: 12

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 0

开放问题: 0

类型:symfony-bundle

dev-master 2018-07-27 12:11 UTC

This package is not auto-updated.

Last update: 2024-09-21 15:22:17 UTC


README

此扩展包是一个管理媒体库的解决方案,包括后端系统以及用于前端显示的 Twig 函数。

工作原理

此扩展包使用 VichUploaderBundle 来工作。

后端系统使用 bootstrap 4 显示所有模板。

MediaBundle 提供了一些实体、控制器、表单和 Twig 扩展。

要了解更多关于此扩展包的使用方法,请查阅 文档

安装

  1. 使用 composer 安装

    $ composer require seraph/media-bundle
  2. 添加 SeraphMediaBundle 配置

    # app/config/packages/seraph_media.yaml
    
    seraph_media:
        user_class: App\Entity\User
        group_class: App\Entity\Group
        # upload_folder: /uploads/
  3. 添加扩展的路由

    # app/config/routes.yaml   
     
    seraph_media:
        resource: '@SeraphMediaBundle/Controller'
        type: annotation
        # prefix: '/admin' 
  4. 更新数据库,包含用户、组和上传文件

    $ php bin/console doctrine:schema:update --force

使用方法

在这个示例中,我使用了 FosUserBundle,但你也可以使用其他扩展包或你自己的类。

  1. 实现 UserInterface

    use FOS\UserBundle\Model\User as BaseUser;
    use Doctrine\ORM\Mapping as ORM;
    use Seraph\Bundle\MediaBundle\Model\UserInterface;
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="user")
     */
    class User extends BaseUser implements UserInterface
    {
        /**
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
    
        /**
         * @ORM\Column(type="string", length=255, nullable=true)
         */
        protected $firstname;
    
        /**
         * @ORM\Column(type="string", length=255, nullable=true)
         */
        protected $name;
    
        /**
         * @ORM\ManyToMany(targetEntity="App\Entity\Group")
         * @ORM\JoinTable(name="user_group_user",
         *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
         *      inverseJoinColumns={@ORM\JoinColumn(name="group_user_id", referencedColumnName="id")}
         * )
         */
        protected $groups;
    
        /**
         * @ORM\OneToMany(targetEntity="Seraph\Bundle\MediaBundle\Entity\UploadedFile", mappedBy="user")
         */
        protected $files;
    
        // ...
    }
  2. 实现 GroupInterface

    use FOS\UserBundle\Model\Group as BaseGroup;
    use Doctrine\ORM\Mapping as ORM;
    use Seraph\Bundle\MediaBundle\Model\GroupInterface;
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="group_user")
     */
    class Group extends BaseGroup implements GroupInterface
    {
        /**
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
    
        /**
         * @ORM\OneToMany(targetEntity="Seraph\Bundle\MediaBundle\Entity\UploadedFile", mappedBy="group")
         */
        protected $files;
     
        // ...
     }

文档

在此文件夹中,你可以找到如何使用此扩展包的信息