netliva/filetype

Netliva 文件类型

v0.2.1 2021-02-03 11:47 UTC

This package is auto-updated.

Last update: 2024-09-15 13:11:09 UTC


README

此包向 Symfony Form 添加文件类型

安装

使用 Symfony Flex 的应用程序

打开命令控制台,进入您的项目目录并执行

$ composer require netliva/filetype

不使用 Symfony Flex 的应用程序

步骤 1:下载包

打开命令控制台,进入您的项目目录并执行以下命令以下载此包的最新稳定版本

$ composer require netliva/filetype

此命令要求您已全局安装 Composer,如 Composer 文档中的安装章节所述。

步骤 2:启用包

然后,通过将其添加到项目 app/AppKernel.php 文件中注册的包列表中来启用该包

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Netliva\FileTypeBundle\NetlivaFileTypeBundle(),
        );

        // ...
    }

    // ...
}

配置

路由定义

netliva_file_route:
  resource: .
  type: netliva_file_route

配置定义

您可以通过以下代码将这些设置添加到您的配置文件中,以调整文件上传的位置和下载链接。这些设置是可选的,默认值如下。

# 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: 一个虚拟目录,指示从哪个子目录下可以下载上传的文件。文件实际上并不存储在这个目录下,只是定义了文件的可见 URL。如果这里指定的目录实际上在项目根目录中,可能会在显示时出现问题。

基本用法

首先,以 json_arraytext 格式创建数据库字段。然后,为该字段添加以下 formtype 定义。

<?php
//...
public function buildForm (FormBuilderInterface $formBuilder, array $options)
{
   //...
   $formBuilder->add('images', NetlivaFileType::class, [ 'label' => 'Images', 'multiple' => false]);
   // Eğer Bootstrap Css Kütüphanesini kullanıyorsanız, bootstrap görünümünü aktifleştirin
   $formBuilder->add('images', NetlivaFileType::class, [ 'label' => 'Images', 'multiple' => false, 'bootstrap'=>true]);
   // Yüklenen dosya için benzersiz bir isim ile yüklenmesini isterseniz unique_name aktifleştirebilirsiniz
   $formBuilder->add('images', NetlivaFileType::class, [ 'label' => 'Images', 'multiple' => false, 'unique_name'=>true]);
   // Dosyanın belirtilen ana yükleme dizini içinde alt klasöre yüklenmesi için 'sub_folder' kullanabilirsiniz
   $formBuilder->add('images', NetlivaFileType::class, [ 'label' => 'Images', 'multiple' => false, 'sub_folder'=>'categorized/sub/folder']);
   // return_data_type yardımıyla dönüş değerini belirleyebilirsiniz. Varsayılan değer 'array' dir.
   // Eğer veritabanı alanı text ise 'string', json ise 'array' belirlemeniz uygundur.
   $formBuilder->add('images', NetlivaFileType::class, [ 'label' => 'Images', 'multiple' => false, 'return_data_type'=>'string']);
   //...
}
//...
?>

使用已保存的数据

如果只上传了一个文件;

<img src="{{ entity.image|nl_file_uri }}" />

如果 multiple => true 进行了上传;

{% for img in entity.images %}
   <img src="{{ img|nl_file_uri }}" />
{% endfor %}