tweedegolf / media-bundle
Symfony 和 tinyMCE 的媒体管理器捆绑包
Requires
- php: >=5.6
- doctrine/doctrine-bundle: ^1.2
- doctrine/orm: ^2.4
- liip/imagine-bundle: ^1.2
- symfony/config: ^2.7|^3.0|^4.0
- symfony/dependency-injection: ^2.7|^3.0|^4.0
- symfony/event-dispatcher: ^2.7|^3.0|^4.0
- symfony/form: ^2.7|^3.0|^4.0
- symfony/http-kernel: ^2.7|^3.0|^4.0
- symfony/validator: ^2.7|^3.0|^4.0
- vich/uploader-bundle: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.2
- phpunit/phpunit: ^5.7|^6.0|^7.0
README
The TweedeGolf MediaBundle 为您的 Symfony 项目提供了一个现成的媒体管理器。尽管它特别设计用于与 tinyMCE 一起工作,但媒体捆绑包也可以用于多种其他用途。
本质上,TweedeGolf MediaBundle 提供了一个文件实体和一个控制器,该控制器实现了针对此实体的 JSON API。
依赖项
此存储库仅提供 Symfony 捆绑包,可以通过 composer 安装。用于显示模态框的前端脚本可以在 https://github.com/tweedegolf/media-browser 上找到,并可以使用 bower 安装。
Composer 依赖项
Bower 依赖项
安装和配置
要使用 bower 和 gulp 设置一个 Symfony 项目,一个很好的起点是 TweedeGolf Symfony Okoa 项目。
使用 Composer 将捆绑包添加到您的需求中,运行 composer require tweedegolf/media-bundle
。
有关媒体浏览器的安装说明,请参阅存储库。
基本配置
在您的配置文件 config/packages/tweede_golf_media.yaml
(或 app/config/config.yml
)中定义映射
您可以配置每页显示的最大项目数。
您必须配置文件实体的名称。
tweede_golf_media: max_per_page: 24 # this is optional (default is 18) file_entity: 'App:File' # this is required
以下是您可以定义的文件实体示例
<?php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use TweedeGolf\MediaBundle\Model\AbstractFile; /** * @ORM\Entity * @ORM\Table * @ORM\Entity(repositoryClass="TweedeGolf\MediaBundle\Entity\FileRepository") */ class File extends AbstractFile { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; public function getId(): int { return $this->id; } }
此外,MediaBundle 依赖于其他捆绑包中的一些配置。必须定义一个名为 tgmedia_files
的 VichUploader 映射。此外,还需要一个名为 tgmedia_thumbnail
的 LiipImagine 过滤器。
在文档中提供了这些捆绑包的 示例配置。
将路由添加到您的路由文件
在 config/routes.yaml
(或 app/config/routing.yml
)中,添加媒体捆绑包 API 的路由
tweedegolf_media: resource: "@TweedeGolfMediaBundle/Controller/" type: annotation prefix: /api
请确保捆绑包的路径与包含媒体浏览器时指定的 JavaScript 源路径相匹配。因此,/api
应与包含 JavaScript 源时指定的路径的第一部分相匹配
var media_callback = require('tweedegolf-media-browser').tinymce_callback('/api/modal');
将捆绑包添加到您的 AppKernel
如果您使用 Flex,您应该已经在 config/bundles.php
中有了捆绑包
return [ // ... Vich\UploaderBundle\VichUploaderBundle::class => 'all', Liip\ImagineBundle\LiipImagineBundle::class => 'all', TweedeGolf\MediaBundle\TweedeGolfMediaBundle::class => 'all', // ... ];
如果您仍然使用旧系统,您需要手动将其添加到 app/AppKernel.php
public function registerBundles() { return [ // ... new Vich\UploaderBundle\VichUploaderBundle(), new Liip\ImagineBundle\LiipImagineBundle(), new TweedeGolf\MediaBundle\TweedeGolfMediaBundle(), // ... ]; }