seraph / media-bundle
Media Bundle 是一个管理多媒体库的解决方案。
dev-master
2018-07-27 12:11 UTC
Requires
- php: ^7.0
- symfony/console: ^4.0
- symfony/flex: ^1.0
- symfony/form: ^4.0
- symfony/framework-bundle: ^4.0
- symfony/lts: ^4@dev
- symfony/orm-pack: ^1.0
- symfony/swiftmailer-bundle: ^3.2
- symfony/templating: ^4.0
- symfony/twig-bundle: ^4.0
- symfony/yaml: ^4.0
- vich/uploader-bundle: ^1.8
This package is not auto-updated.
Last update: 2024-09-21 15:22:17 UTC
README
此扩展包是一个管理媒体库的解决方案,包括后端系统以及用于前端显示的 Twig 函数。
工作原理
此扩展包使用 VichUploaderBundle 来工作。
后端系统使用 bootstrap 4 显示所有模板。
MediaBundle 提供了一些实体、控制器、表单和 Twig 扩展。
要了解更多关于此扩展包的使用方法,请查阅 文档。
安装
-
使用 composer 安装
$ composer require seraph/media-bundle
-
添加 SeraphMediaBundle 配置
# app/config/packages/seraph_media.yaml seraph_media: user_class: App\Entity\User group_class: App\Entity\Group # upload_folder: /uploads/
-
添加扩展的路由
# app/config/routes.yaml seraph_media: resource: '@SeraphMediaBundle/Controller' type: annotation # prefix: '/admin'
-
更新数据库,包含用户、组和上传文件
$ php bin/console doctrine:schema:update --force
使用方法
在这个示例中,我使用了 FosUserBundle,但你也可以使用其他扩展包或你自己的类。
-
实现 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; // ... }
-
实现 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; // ... }
文档
在此文件夹中,你可以找到如何使用此扩展包的信息