Extension for file uploading and attaching to the models
This fork has the aim to implement some missing features such as multiple fields and simplifying installation
You can see the demo on the krajee website
- The preferred way to install this extension is through composer.
Either run
composer require badbreze/yii2-attachments
or add
"badbreze/yii2-attachments": ">=1.2.0"
to the require section of your composer.json
file.
- Add module to your main config:
<?php
'aliases' => [
'@file' => dirname(__DIR__),
],
'modules' => [
'file' => [
'class' => 'file\FileModule',
'webDir' => 'files',
'tempPath' => '@common/uploads/temp',
'storePath' => '@common/uploads/store',
'tableName' => '{{%attach_file}}' // Optional, default to 'attach_file'
],
],
Also, add these lines to your console config:
<?php
'controllerMap' => [
'file' => [
'class' => 'yii\console\controllers\MigrateController',
'migrationPath' => '@file/migrations'
],
],
- Apply migrations
php yii migrate/up --migrationPath=@vendor/badbreze/yii2-attachments/src/migrations
- Attach behavior to your model (be sure that your model has "id" property)
<?php
use yii\helpers\ArrayHelper;
/**
* Declare file fields
*/
public $my_field_multiple_files;
public $my_field_single_file;
/**
* Adding the file behavior
*/
public function behaviors()
{
return ArrayHelper::merge(parent::behaviors(), [
'fileBehavior' => [
'class' => \file\behaviors\FileBehavior::className()
]
]);
}
/**
* Add the new fields to the file behavior
*/
public function rules()
{
return ArrayHelper::merge(parent::rules(), [
[['my_field_multiple_files', 'my_field_single_file'], 'file'],
]);
}
-
Make sure that you have added
'enctype' => 'multipart/form-data'
to the ActiveForm options -
Make sure that you specified
maxFiles
in module rules andmaxFileCount
onAttachmentsInput
to the number that you want -
Youre ready to use, See How