Description
This is fork for yii-dream-team/yii2-upload-behavior from Yii Dream Team (http://yiidreamteam.com), (*1)
Yii2 file/image upload behavior for ActiveRecord
This package is the set of two similar behaviors. The first one allows you to keep the uploaded file as-is.
And the second one allows you to generate set of thumbnails for the uploaded image. Behaviors could be attached
multiple times for different attributes., (*2)
Installation
The preferred way to install this extension is through composer., (*3)
Either run, (*4)
php composer.phar require --prefer-dist valiant/yii2-upload-behavior "*"
or add, (*5)
"valiant/yii2-upload-behavior": "*"
to the require section of your composer.json., (*6)
FileUploadBehavior
This behavior allow you to add file uploading logic with ActiveRecord behavior., (*7)
Usage
Attach the behavior to your model class:, (*8)
public function behaviors()
{
return [
[
'class' => '\valiant\behaviors\FileUploadBehavior',
'attribute' => 'attachment',
'filePath' => '@webroot/uploads/[[pk]].[[extension]]',
'fileUrl' => '/uploads/[[pk]].[[extension]]',
],
];
}
You can use Yii path aliases
like @app, @webroot, @web in your path template configuration., (*9)
You can also use additional placeholders in path templates.
Placeholder [[foobar]] will be replaced with appropriate placeholder value., (*10)
Possible path/url placeholders:, (*11)
-
[[model]] - model class name
-
[[pk]] - value of the primary key
-
[[id]] - the same as [[pk]]
-
[[extension]] - original extension
-
[[attribute]] - attribute name
-
[[id_path]] - id subdirectories structure (if model primary key is 12345, placeholder value will be 1/2/3/4/5/0/0/0/0/0)
-
[[id_hash]] - id subdirectories structure by md5 hash (if model primary key is 12345, md5 hash is 827ccb0eea8a706c4c34a16891f84e7b placeholder value will be 8/27/ccb0eea8a706c4c34a16891f84e7b)
-
[[id_hash_piece]] - id hash dex piece, will be in range 0-255 (if model primary key is 12345, md5 hash is 827ccb0eea8a706c4c34a16891f84e7b, first 2 hex numbers is 82, convert hexDex and placeholder value will be 130)
-
[[attribute_name]] - attribute value, for example [[attribute_ownerId]]
Add validation rule:, (*12)
public function rules()
{
return [
['attachment', 'file'],
];
}
Setup proper form enctype:, (*13)
$form = \yii\bootstrap\ActiveForm::begin([
'enableClientValidation' => false,
'options' => [
'enctype' => 'multipart/form-data',
],
]);
File should be uploading fine., (*14)
You can get uploaded file url using model call:, (*15)
echo $model->getUploadedFileUrl('attachment');
ImageUploadBehavior
Image upload behavior extends file upload behavior with image thumbnails generation.
You can configure set of different thumbnail profiles to generate., (*16)
Usage
Attach the behavior to your model class:, (*17)
public function behaviors()
{
return [
[
'class' => '\valiant\behaviors\ImageUploadBehavior',
'attribute' => 'image',
'thumbs' => [
'thumb' => ['width' => 400, 'height' => 300],
'albumThumb' => ['width' => 200],
'albumLogo' => ['height' => 500],
],
'filePath' => '@webroot/images/[[pk]].[[extension]]',
'fileUrl' => '/images/[[pk]].[[extension]]',
'thumbPath' => '@webroot/images/[[profile]]_[[pk]].[[extension]]',
'thumbUrl' => '/images/[[profile]]_[[pk]].[[extension]]',
],
];
}
You can use Yii path aliases
like @app, @webroot, @web in your path template configuration., (*18)
You can also use additional placeholders in path templates.
Placeholder [[foobar]] will be replaced with appropriate placeholder value., (*19)
Possible path/url placeholders:
* [[model]] - model class name
* [[pk]] - value of the primary key
* [[id]] - the same as [[pk]]
* [[extension]] - original extension
* [[attribute]] - attribute name
* [[id_path]] - id subdirectories structure (if model primary key is 12345, placeholder value will be 1/2/3/4/5/0/0/0/0/0)
* [[id_hash]] - id subdirectories structure by md5 hash (if model primary key is 12345, md5 hash is 827ccb0eea8a706c4c34a16891f84e7b placeholder value will be 8/27/ccb0eea8a706c4c34a16891f84e7b)
* [[id_hash_piece]] - id hash dex piece, will be in range 0-255 (if model primary key is 12345, md5 hash is 827ccb0eea8a706c4c34a16891f84e7b, first 2 hex numbers is 82, convert hexDex and placeholder value will be 130)
* [[attribute_name]] - attribute value, for example [[attribute_ownerId]]
* [[profile]] - thumbnail profile name, use it in thumbnail path/url
* [[width]] - thumbnail width, use it in thumbnail path/url
* [[height]] - thumbnail height, use it in thumbnail path/url, (*20)
Add validation rule:, (*21)
public function rules()
{
return [
['image', 'file', 'extensions' => 'jpg, gif, png'],
];
}
Setup proper form enctype:, (*22)
$form = \yii\bootstrap\ActiveForm::begin([
'enableClientValidation' => false,
'options' => [
'enctype' => 'multipart/form-data',
],
]);
File should be uploading fine., (*23)
You can get uploaded image url using model call:, (*24)
echo $model->getImageFileUrl('image');
You can specify default image for models without uploaded image:, (*25)
echo $model->getImageFileUrl('image', '/images/empty.jpg');
You can also get generated thumbnail image url:, (*26)
echo $model->getThumbFileUrl('image', 'thumb');
You can specify default thumbnail image for models without uploaded image:, (*27)
echo $model->getThumbFileUrl('image', 'thumb', '/images/thumb_empty.jpg');
Licence
MIT, (*28)
Links