nemmo/yii2-attachments

用于文件上传和模型附件的扩展

安装数: 15,757

依赖项: 7

建议者: 0

安全性: 0

星标: 66

关注者: 14

分支: 57

类型:yii2-extension

1.0.1 2023-09-13 19:28 UTC

README

Latest Stable Version License Build Status Code Coverage Scrutinizer Code Quality Total Downloads

用于文件上传和模型附件的扩展

演示

您可以在 krajee 网站上查看演示

安装

  1. 安装此扩展的首选方式是通过 composer

    运行

    php composer.phar require nemmo/yii2-attachments "~1.0.1"
    

    或添加

    "nemmo/yii2-attachments": "~1.0.1"
    

    到您的 composer.json 文件的 require 部分。

  2. 将模块添加到 common/config/main.php

    'modules' => [
    	...
    	'attachments' => [
    		'class' => nemmo\attachments\Module::className(),
    		'tempPath' => '@app/uploads/temp',
    		'storePath' => '@app/uploads/store',
    		'rules' => [ // Rules according to the FileValidator
    		    'maxFiles' => 10, // Allow to upload maximum 3 files, default to 3
    			'mimeTypes' => 'image/png', // Only png images
    			'maxSize' => 1024 * 1024 // 1 MB
    		],
    		'tableName' => '{{%attachments}}' // Optional, default to 'attach_file'
    	]
    	...
    ]
  3. 应用迁移

    	'controllerMap' => [
    	...
    	'migrate' => [
    		'class' => 'yii\console\controllers\MigrateController',
    		'migrationNamespaces' => [
    			'nemmo\attachments\migrations',
    		],
    	],
    	...
    	],
    php yii migrate/up
    
  4. 将行为附加到您的模型(确保您的模型有 "id" 属性)

    public function behaviors()
    {
    	return [
    		...
    		'fileBehavior' => [
    			'class' => \nemmo\attachments\behaviors\FileBehavior::className()
    		]
    		...
    	];
    }
  5. 确保您已将 'enctype' => 'multipart/form-data' 添加到 ActiveForm 选项中

  6. 确保您在模块规则中指定了 maxFiles,并在 AttachmentsInput 上指定了 maxFileCount 为您想要的数字

使用方法

  1. 在模型的 form.php 中添加文件输入

    <?= \nemmo\attachments\components\AttachmentsInput::widget([
    	'id' => 'file-input', // Optional
    	'model' => $model,
    	'options' => [ // Options of the Kartik's FileInput widget
    		'multiple' => true, // If you want to allow multiple upload, default to false
    	],
    	'pluginOptions' => [ // Plugin options of the Kartik's FileInput widget 
    		'maxFileCount' => 10 // Client max files
    	]
    ]) ?>
  2. view.php 中使用小部件显示模型的所有附件

    <?= \nemmo\attachments\components\AttachmentsTable::widget([
    	'model' => $model,
    	'showDeleteButton' => false, // Optional. Default value is true
    ])?>
  3. (已弃用)向提交按钮添加 onclick 操作,在上传所有文件后再提交表单

    <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', [
    	'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary',
    	'onclick' => "$('#file-input').fileinput('upload');"
    ]) ?>
  4. 您可以通过调用 $model->files 来获取所有附件的文件,例如

    foreach ($model->files as $file) {
        echo $file->path;
    }

使用事件

您可以将以下函数添加到您的模型中

public function init(){
    $this->on(\nemmo\attachments\behaviors\FileBehavior::EVENT_AFTER_ATTACH_FILES, function ($event) {
        /** @var $files \nemmo\attachments\models\File[] */
        $files = $event->files;
        //your custom code
    });
    parent::init();
}

文件控制器路由 - 无下载选项。

现在可以在文件控制器请求中添加 "inline"。
这是通过使用 $file->getUrl(true) 函数选项来完成的。如果您想在浏览器中直接显示文件而不是下载它,请使用此功能。这也帮助了预览配置,因为不再需要将 getUrl() 包裹在图像标签中来阻止其他文件类型的下载。

ex:
	foreach ($this->getFiles() as $file) {
             $initialPreview[] =$file->getUrl(true);
        }

变更日志

  • 2023年9月13日 - 添加了打开文件的在线能力。更新了 initialPreviewConfig 和 AttachementsInput 以使用 Kartik 内置预览。
  • 2016年12月7日 - 迁移命名空间随 Yii 2.0.10 一起到来。发布 1.0.0-beta.3。
  • 2016年4月19日 - 重构和测试。Ajax 移除。发布 1.0.0-beta.2。
  • 2015年8月17日 - 支持在迁移前指定表前缀 - 您可以在迁移前指定表名。
  • 2015年7月9日 - 修复了自动提交表单的问题。
  • 2015年6月19日 - 修复了仅上传文件而不提交整个表单以及忽略上传错误提交表单的问题。
  • 2015年5月1日 - 修复了在连接慢或上传时间长时上传的问题。现在 onclick 事件在提交按钮上是已弃用的。
  • 2015年4月16日 - 允许用户拥有一个继承自 FileBehavior 的自定义行为类。
  • 2015年4月4日 - 现在所有临时上传的文件将在每次新表单打开时被删除。
  • 2015年3月16日 - 修复:生成初始预览时的错误。添加:通过调用 $file->path 获取附件文件的路径。
  • 2015年3月5日 - 修复:对最大上传文件数量的限制。
  • 2015年3月4日 - 添加了对最大上传文件数量的限制。
  • 2015年3月3日 - 修复文件输入小部件的 id。
  • 2015年2月13日 - 添加了对文件的限制(参见使用部分的第一点),现在在表单视图中使用 AttachmentsInput 小部件而不是 FileInput
  • 2015年2月11日 - 添加已上传但未保存的文件的预览和 widget 的 tableOptions 属性
  • 2015年2月2日 - 修复:所有附加文件将与模型一起删除。
  • 2015年2月1日 - AJAX 或基本上传。
  • 2015年1月30日 - 多个图像和其他文件的预览,修复所需的包。
  • 2015年1月29日 - 第一个版本,具有基本上传和预览功能。