cyneek / yii2-upload-behavior
Yii 2 的上传行为
Requires
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。保留所有权利。
在满足以下条件的情况下,允许重新分配和使用源代码和二进制形式,无论是否修改:
- 源代码重新分配必须保留上述版权声明、本条件列表和以下免责声明。
- 二进制形式重新分配必须复制上述版权声明、本条件列表和以下免责声明在随分发提供的文档和其他材料中。
- 未经事先书面许可,Cyneek 名称及其贡献者的名称不得用于认可或推广源自本软件的产品。
本软件由版权所有者“按原样”提供,并放弃任何明示或暗示的保证,包括但不限于适销性和适用于特定目的的隐含保证。在任何情况下,版权所有者均不对任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)负责,无论何种原因引起,无论是在合同、严格责任或侵权(包括疏忽或否则)责任下,即使在被告知此类损害的可能性时也是如此。
安装
...
'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_INSET
或ManipulatorInterface::THUMBNAIL_OUTBOUND
)。
## 用法
-
- 为要链接到方法的每个不同文件添加新的公共字段。
public $file; public $avatar;
-
- 在模型的方法定义中添加所需的操作。对于要链接到模型中的每个文件类型,一个。
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']] ], ]; }
-
- 在父模型方法中添加文件规则
public function rules() { return [ ... [['file', 'avatar'], 'file', 'on' => ['insert', 'update', 'default']], ['file', 'required', 'on' => ['insert']], ['avatar', 'file', 'extensions' => ['jpg'], 'maxSize' => 1020*1024] ... ]; }
-
- 在CRUD表单中插入与方法的属性链接的上传字段。
<?= $form->field($model, 'file')->fileInput() ?> <?= $form->field($model, 'avatar')->fileInput() ?>
-
- 保存模型数据时,行为将上传文件并自动存储所有数据。此外,删除方法对象时,它将删除所有与其链接的文件。
文件操作
访问单个文件
-
- 加载模型对象
$object = MethodClass::find()->where(['id' => 1])->one();
-
- 使用适当的属性调用loadFile方法
$file = $object->linkedFile('file');
访问多个文件
-
- 加载模型对象
$object = MethodClass::find()->where(['id' => 1])->one();
-
- 使用适当的属性调用loadFiles方法
$fileList = $object->linkedFiles('file');
删除特定链接文件
-
- 加载模型对象
$object = MethodClass::find()->where(['id' => 1])->one();
-
- 加载特定文件
$file = $object->linkedFile('file');
- 3 使用属性和文件对象调用deleteFiles方法
$object->deleteFiles('file', $file);
删除所有链接文件
-
- 加载模型对象
$object = MethodClass::find()->where(['id' => 1])->one();
-
- 使用适当的属性调用deleteFiles方法
$object->deleteFiles('file');
从图像获取缩略图
-
- 加载模型对象
$object = MethodClass::find()->where(['id' => 1])->one();
-
- 使用适当的属性调用loadFile方法
$file = $object->linkedFile('file');
-
- 使用特定的缩略图名称调用getChild方法
$thumbnail = $file->getChild('thumb');
从图像获取多个缩略图
-
- 加载模型对象
$object = MethodClass::find()->where(['id' => 1])->one();
-
- 使用适当的属性调用loadFile方法
$file = $object->linkedFile('file');
-
- 使用可选的特定缩略图名称调用getChildren方法
$thumbnailList = $file->getChildren();