netliva / medialib
Netliva 媒体库
Requires
- php: >=5.3.3
- netliva/filetype: ~0.1
- symfony/framework-bundle: ~3.0|~4.0
README
此包为 Symfony 表单添加媒体库功能
安装
使用 Symfony Flex 的应用程序
打开命令行,进入您的项目目录,并执行以下命令:
$ composer require netliva/medialib
不使用 Symfony Flex 的应用程序
步骤 1:下载 Bundle
打开命令行,进入您的项目目录,并执行以下命令以下载此 Bundle 的最新稳定版本:
$ composer require netliva/medialib
此命令要求您全局安装了 Composer,具体请参考 Composer 文档中的安装章节。
步骤 2:启用 Bundle
然后,通过将其添加到项目 app/AppKernel.php 文件中注册的 Bundle 列表来启用该 Bundle
NetlivaFileTypeBundle 已经作为 NetlivaMediaLibBundle 的依赖项安装。如果您之前没有安装 NetlivaFileTypeBundle,由于依赖关系,您必须启用它。
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new Netliva\MediaLibBundle\NetlivaMediaLibBundle(), new Netliva\FileTypeBundle\NetlivaFileTypeBundle(), ); // ... } // ... }
步骤 3:更新数据库模式
php bin/console doctrine:schema:update --force
将资源包含到您的项目中
安装资源
按照以下步骤安装资源:
$ php bin/console assets:install
此命令将在以下文件夹中创建资源文件;(Symfony >= 4.0) public/bundles/netlivamedialib (Symfony >= 3.3) web/bundles/netlivamedialib .
将 assets 命令创建的文件包含到您的项目中
<link href="{{ asset('bundles/netlivamedialib/nmlb.css' }}" rel="stylesheet" type="text/css"> <script src="{{ asset('bundles/netlivamedialib/nmlb.js' }}"></script>
或使用 webpack encore;
// assets/js/app.js require('../../public/bundles/netlivamedialib/nmlb.css'); require('../../public/bundles/netlivamedialib/nmlb.js');
本地化
要使用不同语言使用 MediaLib,请将 js 文件包含到您的项目中的
bundles/netlivamedialib/localize.
例如;
<script src="{{ asset('bundles/netlivamedialib/localize/tr.js' }}"></script>
配置
路由定义
netliva_file_route: resource: . type: netliva_file_route
配置定义
您可以像下面这样配置您的上传文件夹或下载 uri。这些设置是可选的,默认值如下所示。
# Symfony >= 4.0. Create a dedicated netliva_config.yaml in config/packages with: # Symfony >= 3.3. Add in your app/config/config.yml: netliva_file_type: file_config: upload_dir: public/netliva_uploads download_uri: /uploads
- upload_dir:此选项设置文件将从项目根目录开始上传的位置。
- download_uri:此选项设置一个虚拟文件夹名称,从该文件夹下载文件夹。如果项目根目录中存在此名称的文件夹,将导致错误
基本用法
首先在您的实体中添加一个 json_array 类型的字段。然后简单地将 MediaLibType 添加到表单中的此字段。
<?php //... public function buildForm (FormBuilderInterface $formBuilder, array $options) { //... $formBuilder->add('images', MediaLibType::class, [ 'label' => 'Images', 'button_text'=>"select file", 'multiple'=>"true"]); //... } //... ?>
通过设置 Multiple 为 true,您可以选择多个文件,或者通过设置为 false 只允许选择一个文件。
使用插入的数据到字段
如果您的数据是多个上传
get_nl_mfolder() twig 函数将从字段返回文件夹信息。您可以使用 nl_file_uri twig 过滤器从字段获取文件路径。
{% for image in get_nl_mfolder(entity.images).files %}
<img src="{{ image|nl_file_uri }}" />
{% endfor %}
如果您的数据是单个文件上传
get_nl_mfile() twig 函数将从字段返回文件信息。您可以使用 nl_file_uri twig 过滤器从字段获取文件路径。
<img src="{{ get_nl_mfile(entity.image)|nl_file_uri }}" />