vaszloy / yii2-upload-behavior
此软件包最新版本(2.1.2)的许可证信息不可用。
Yii2 ActiveRecord 文件/图片上传行为
2.1.2
2019-04-18 09:04 UTC
Requires
- php: >=7.1
- yiisoft/yii2: >=2.0.13
- yiisoft/yii2-imagine: 2.*
This package is not auto-updated.
Last update: 2024-09-28 08:25:56 UTC
README
本软件包包含两组类似的行为。第一个行为允许您保持上传的文件不变。第二个行为允许您为上传的图片生成一组缩略图。行为可以多次附加到不同的属性上。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令:
php composer.phar require --prefer-dist bajadev/yii2-upload-behavior "*"
或者
"bajadev/yii2-upload-behavior": "*"
将以下内容添加到您的 composer.json 文件中的 require
部分:
FileUploadBehavior
此行为允许您通过 ActiveRecord 行为添加文件上传逻辑。
用法
将行为附加到您的模型类
public function behaviors()
{
return [
[
'class' => '\bajadev\upload\FileUploadBehavior',
'attribute' => 'fileUpload',
'filePath' => '@webroot/uploads/[[pk]].[[extension]]',
'fileUrl' => '/uploads/[[pk]].[[extension]]',
],
];
}
您可以在路径模板配置中使用 Yii 路径别名,例如 @app
、@webroot
、@web
。
您还可以在路径模板中使用额外的占位符。占位符 [[foobar]]
将被替换为适当的占位符值。
可能的路径/URL 占位符
[[model]]
- 模型类名[[pk]]
- 主键的值[[id]]
- 与[[pk]]
相同[[attribute_name]]
- 属性值,例如[[attribute_ownerId]]
[[slug_attribute_name]]
- 通过 Inflector 生成属性值,例如[[attribute_ownerId]]
[[md5_attribute_name]]
- 生成 md5 值,例如[[attribute_ownerId]]
[[id_path]]
- id 子目录结构(如果模型主键是12345
,则占位符值将为1/2/3/4/5
[[basename]]
- 带扩展名的原始文件名[[filename]]
- 不带扩展名的原始文件名[[extension]]
- 原始扩展名
添加验证规则
public function rules()
{
return [
['fileUpload', 'file'],
];
}
设置合适的表单 enctype
$form = \yii\bootstrap\ActiveForm::begin([
'enableClientValidation' => false,
'options' => [
'enctype' => 'multipart/form-data',
],
]);
文件应顺利上传。
您可以使用模型调用获取上传文件的 URL
echo $model->getUploadedFileUrl('fileUpload');
ImageUploadBehavior
ImageUploadBehavior 在文件上传行为的基础上扩展了生成图片缩略图的功能。您可以配置一组不同的缩略图配置来生成。
用法
将行为附加到您的模型类
public function behaviors()
{
return [
[
'class' => '\bajadev\upload\ImageUploadBehavior',
'attribute' => 'imageUpload',
'thumbs' => [
'thumb' => ['width' => 400, 'height' => 300, 'crop' => false, 'quality' => 80],
],
'deleteOriginalFile' => true,
'rotateImageByExif' => true,
'filePath' => '@webroot/images/[[pk]].[[extension]]',
'fileUrl' => '@web/images/[[pk]].[[extension]]',
'thumbPath' => '@webroot/images/[[profile]]_[[pk]].[[extension]]',
'thumbUrl' => '@web/images/[[profile]]_[[pk]].[[extension]]',
],
];
}
您可以在路径模板配置中使用 Yii 路径别名,例如 @app
、@webroot
、@web
。
您还可以在路径模板中使用额外的占位符。占位符 [[foobar]]
将被替换为适当的占位符值。
可能的路径/URL 占位符
[[model]]
- 模型类名[[pk]]
- 主键的值[[id]]
- 与[[pk]]
相同[[attribute_name]]
- 属性值,例如[[attribute_ownerId]]
[[slug_attribute_name]]
- 通过 Inflector 生成属性值,例如[[attribute_ownerId]]
[[md5_attribute_name]]
- 生成 md5 值,例如[[attribute_ownerId]]
[[id_path]]
- id 子目录结构(如果模型主键是12345
,则占位符值将为1/2/3/4/5/
[[basename]]
- 带扩展名的原始文件名[[filename]]
- 不带扩展名的原始文件名[[extension]]
- 原始扩展名[[profile]]
- 缩略图配置名称,用于缩略图路径/URL
添加验证规则
public function rules()
{
return [
['imageUpload', 'file', 'extensions' => 'jpeg, gif, png'],
];
}
设置合适的表单 enctype
$form = \yii\bootstrap\ActiveForm::begin([
'options' => [
'enctype' => 'multipart/form-data',
],
]);
文件应顺利上传。
您可以使用模型调用获取上传图片的 URL
echo $model->getImageFileUrl('imageUpload');
您可以为没有上传图片的模型指定默认图片
echo $model->getImageFileUrl('imageUpload', '/images/empty.jpg');
您还可以获取生成的缩略图图片 URL
echo $model->getThumbFileUrl('imageUpload', 'thumb');
您可以为没有上传图片的模型指定默认缩略图图片
echo $model->getThumbFileUrl('imageUpload', 'thumb', '/images/thumb_empty.jpg');
许可证
MIT