dlds / yii2-attachments
Extension for file uploading and attaching to the models
Installs: 238
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 3
Forks: 57
Type:yii2-extension
Requires
- php: >=5.4.0
- kartik-v/yii2-widget-fileinput: *
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-12-21 18:33:25 UTC
README
Extension for file uploading and attaching to the models
Installation
-
The preferred way to install this extension is through composer.
Either run
php composer.phar require dlds/yii2-attachments "*"
or add
"dlds/yii2-attachments": "*"
to the require section of your
composer.json
file. -
Apply migrations
php yii migrate/up --migrationPath=@vendor/dlds/yii2-attachments/migrations
-
Add module to
config/main.php
'modules' => [ ... 'attachments' => [ 'class' => dlds\attachments\Module::className(), 'tempPath' => '@app/uploads/temp', 'storePath' => '@app/uploads/store' ] ... ]
-
Attach behavior to your model (be sure that your model has "id" property)
public function behaviors() { return [ ... 'attachmentBehavior' => [ 'class' => \dlds\attachments\behaviors\AttachmentBehavior::className() ] ... ]; }
-
Make sure that you have added
'enctype' => 'multipart/form-data'
to the ActiveForm options
Usage
-
In the
form.php
of your model add file input<?= \kartik\file\FileInput::widget([ 'name' => 'file[]', 'id' => 'file-input', 'options' => [ 'multiple' => true, // false if you want to allow upload a single file ], 'pluginOptions' => [ 'uploadUrl' => yii\helpers\Url::toRoute('/attachments/file/upload'), // remove this if you don't want to use AJAX uploading 'initialPreview' => $model->isNewRecord ? [] : $model->getInitialPreview(), 'initialPreviewConfig' => $model->isNewRecord ? [] : $model->getInitialPreviewConfig(), // other options ] ]); ?>
-
Use widget to show all attachments of the model in the
view.php
<?= \dlds\attachments\components\AttachmentsTable::widget(['model' => $model]) ?>
-
(Optional) Add onclick action to your submit button that uploads all files before submitting form
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary', 'onclick' => "$('#file-input').fileinput('upload');" ]) ?>
Change log
- Feb 2, 2015 - Fix: all attached files will be deleted with the model.
- Feb 1, 2015 - AJAX or basic upload.
- Jan 30, 2015 - Several previews of images and other files, fix of required packages.
- Jan 29, 2015 - First version with basic uploading and previews.