netliva / filetype
Netliva 文件类型
v0.2.1
2021-02-03 11:47 UTC
Requires
- php: >=5.3.3
- symfony/framework-bundle: ~3.0|~4.0
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_array 或 text 格式创建数据库字段。然后,为该字段添加以下 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 %}