cyneek/yii2-upload-behavior

Yii 2 的上传行为

0.0.8 2016-01-05 11:30 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:04:20 UTC


README

为 Yii2 应用程序提供文件或图像上传行为

什么是文件上传行为?

此模块更改了 Yii2 的路由系统定义,以便不再需要在应用程序的配置文件中定义路由,现在将能够创建一系列包含用户为他的网站定义的路由的文件。此模块允许调用一系列方法来以更直观的方式定义系统路由,其灵感来源于 Laravel 定义的路由系统。

由 Joseba Juániz 开发 (@Patroklo)

最低要求

  • Yii2
  • PHP 5.4 或更高版本

许可证

这是一款免费软件。它按照以下 BSD 许可证的条款发布。

版权所有 (c) 2015, by Cyneek。保留所有权利。

在满足以下条件的情况下,允许重新分配和使用源代码和二进制形式,无论是否修改:

  1. 源代码重新分配必须保留上述版权声明、本条件列表和以下免责声明。
  2. 二进制形式重新分配必须复制上述版权声明、本条件列表和以下免责声明在随分发提供的文档和其他材料中。
  3. 未经事先书面许可,Cyneek 名称及其贡献者的名称不得用于认可或推广源自本软件的产品。

本软件由版权所有者“按原样”提供,并放弃任何明示或暗示的保证,包括但不限于适销性和适用于特定目的的隐含保证。在任何情况下,版权所有者均不对任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)负责,无论何种原因引起,无论是在合同、严格责任或侵权(包括疏忽或否则)责任下,即使在被告知此类损害的可能性时也是如此。

安装

  • 安装 Yii 2
  • 通过 composer 安装包 "cyneek/yii2-upload-behavior": "*"
  • 更新配置文件 'config/web.php'
...
'modules' => [
	'uploadBehavior' => [
		'class' => 'cyneek\yii2\uploadBehavior\Module',
	],
]
...
  • 执行迁移文件

    • php yii migrate --migrationPath=@vendor/cyneek/yii2-upload-behavior/migrations
  • 大功告成!

定义

UploadBehavior

此行为将负责上传文件,而表单的规则应存储在包含此行为的父模型中。

  • attribute (必需) 连接模型与我们要上传的文件的属性。

  • scenarios (默认: "default", "insert", "update", "delete") 上传将发生的场景。

  • fileActionOnSave (默认: insert)(必需) 上传文件时将执行的操作。有效操作:* insert 当有新的上传时,始终插入新文件。* update 使用相同的名称用新文件覆盖旧文件。* delete 删除旧文件并在系统中插入新文件。

  • path 保存文件的目录的基本路径或路径别名。

  • instanceByName 通过名称获取文件实例。

  • multiUpload (默认:false) 如果为true,行为将检查多个上传文件而不是单个文件。

UploadImageBehavior

它具有基本的UploadBehavior属性和一系列与图像相关的附加功能。

  • thumbs 存储缩略图属性和操作的数组列表 php [ 'thumbName' => [ ['action' => 'crop', 'width' => 200, 'height' => 200, 'quality' => 90], ... ] ]

  • thumbPath 缩略图将移动到的路径。

  • imageActions 描述对原始图像将执行的操作 php [ ['action' => 'crop', 'width' => 200, 'height' => 200, 'quality' => 90] ]

#### 有效图像操作

默认情况下,图像操作使用yii\image类。

  • crop 需要一个width (int)height (int)start (int[x,y])值。默认情况下,start将是[0,0]。

  • thumbnail width (int)height (int)mode (string)值。有效的模式是 (ManipulatorInterface::THUMBNAIL_INSETManipulatorInterface::THUMBNAIL_OUTBOUND)。

## 用法

    1. 为要链接到方法的每个不同文件添加新的公共字段。
    public $file;
    public $avatar;
    1. 在模型的方法定义中添加所需的操作。对于要链接到模型中的每个文件类型,一个。
    function behaviors()
    {
        return [
            [
                'class' => UploadBehavior::className(),
                'attribute' => 'file',
                'scenarios' => ['default'],
                'fileActionOnSave' => 'delete'
            ],
            [
                'class' => UploadImageBehavior::className(),
                'attribute' => 'avatar',
                'scnearios' => ['default'],
                'fileActionOnSave' => 'delete'
                'imageActions' => [['action' => 'thumbnail', 'width' => '900', 'height' => '400']]
            ],
        ];
    }
    1. 在父模型方法中添加文件规则
    public function rules()
    {
        return [
            ...
            [['file', 'avatar'], 'file', 'on' => ['insert', 'update', 'default']],
            ['file', 'required', 'on' => ['insert']],
            ['avatar', 'file', 'extensions' => ['jpg'], 'maxSize' => 1020*1024]
            ...
        ];
    }
    1. 在CRUD表单中插入与方法的属性链接的上传字段。
        <?= $form->field($model, 'file')->fileInput() ?>
        <?= $form->field($model, 'avatar')->fileInput() ?>
    1. 保存模型数据时,行为将上传文件并自动存储所有数据。此外,删除方法对象时,它将删除所有与其链接的文件。

文件操作

访问单个文件

    1. 加载模型对象
    $object = MethodClass::find()->where(['id' => 1])->one();
    1. 使用适当的属性调用loadFile方法
    $file = $object->linkedFile('file');

访问多个文件

    1. 加载模型对象
    $object = MethodClass::find()->where(['id' => 1])->one();
    1. 使用适当的属性调用loadFiles方法
    $fileList = $object->linkedFiles('file');

删除特定链接文件

    1. 加载模型对象
    $object = MethodClass::find()->where(['id' => 1])->one();
    1. 加载特定文件
    $file = $object->linkedFile('file');
  • 3 使用属性和文件对象调用deleteFiles方法
    $object->deleteFiles('file', $file);

删除所有链接文件

    1. 加载模型对象
    $object = MethodClass::find()->where(['id' => 1])->one();
    1. 使用适当的属性调用deleteFiles方法
    $object->deleteFiles('file');

从图像获取缩略图

    1. 加载模型对象
    $object = MethodClass::find()->where(['id' => 1])->one();
    1. 使用适当的属性调用loadFile方法
    $file = $object->linkedFile('file');
    1. 使用特定的缩略图名称调用getChild方法
    $thumbnail = $file->getChild('thumb'); 

从图像获取多个缩略图

    1. 加载模型对象
    $object = MethodClass::find()->where(['id' => 1])->one();
    1. 使用适当的属性调用loadFile方法
    $file = $object->linkedFile('file');
    1. 使用可选的特定缩略图名称调用getChildren方法
    $thumbnailList = $file->getChildren();