Skip to content

Yii2 extension for uploading and attaching the files to the models

Notifications You must be signed in to change notification settings

c4ys/yii2-attachments

 
 

Repository files navigation

Yii2 attachments

yii2 文件上传扩展

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

安装

  1. 修改composer.json文件

      "repositories": [
        {
          "url": "https://github.com/c4ys/yii2-attachments.git",
          "type": "vcs"
        }
      ]
    

    "c4ys/yii2-attachments": "*"
    

    to the require section of your composer.json file.

  2. 添加模块配置

    'modules' => [
    	'file' => [
    		'class' => 'file\FileModule',
    		'webUrl' => '/upload/',
    		'tempPath' => '@common/uploads/temp',
    		'storePath' => '@common/uploads/store',
    		'rules' => [ 
    			'maxFiles' => 20,
    			'maxSize' => 1024 * 1024 * 20 // 20 MB
    		],
    	],
    ],

    添加命令行配置

    'controllerMap' => [
    	'file' => [
    		'class' => 'yii\console\controllers\MigrateController',
    		'migrationPath' => '@file/migrations'
    	],
    ],
  3. 应用数据库迁移

    yii migrate
    
  4. Attach behavior to your model (be sure that your model has "id" property)

    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'],
        ]);
    }
  5. Make sure that you have added 'enctype' => 'multipart/form-data' to the ActiveForm options

  6. Make sure that you specified maxFiles in module rules and maxFileCount on AttachmentsInput to the number that you want