tweedegolf/media-bundle

此包已被弃用且不再维护。未建议替代包。

Symfony 和 tinyMCE 的媒体管理器捆绑包

v0.3.0 2018-12-20 17:55 UTC

This package is auto-updated.

Last update: 2022-10-23 21:22:07 UTC


README

The TweedeGolf MediaBundle 为您的 Symfony 项目提供了一个现成的媒体管理器。尽管它特别设计用于与 tinyMCE 一起工作,但媒体捆绑包也可以用于多种其他用途。

screenshot of the media manger modal

本质上,TweedeGolf MediaBundle 提供了一个文件实体和一个控制器,该控制器实现了针对此实体的 JSON API。

依赖项

此存储库仅提供 Symfony 捆绑包,可以通过 composer 安装。用于显示模态框的前端脚本可以在 https://github.com/tweedegolf/media-browser 上找到,并可以使用 bower 安装。

Composer 依赖项

Bower 依赖项

安装和配置

要使用 bowergulp 设置一个 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(),
        // ...
    ];
}