dkhru/yii2-image-store

组件,用于以简单的容量保存方式存储项目中的所有图片。

安装: 25

依赖项: 0

建议者: 0

安全: 0

星星: 1

关注者: 1

分支: 0

开放问题: 0

类型:yii2-extension

dev-master / 2.0.6.x-dev 2015-12-28 12:20 UTC

This package is auto-updated.

Last update: 2024-09-11 03:08:01 UTC


README

组件,用于以简单的容量保存方式存储项目中的所有图片

功能

  • 通过文件哈希保存唯一的图片,并与所有模型共享
  • 删除时自动检查所有模型字段上的图片依赖项,如果没有依赖项则删除文件
  • 自动创建自定义或预定义尺寸的图片变体
  • 实现对图片文件的公共和受限访问。公共图片使用符号链接,受限图片使用Web控制器
  • 自动附加行为
  • 自动创建控制器映射和URL规则

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一:

php composer.phar require --prefer-dist dkhru/yii2-image-store "*"

或添加

"dkhru/yii2-image-store": "*"

到您的 composer.json 文件的 require 部分。

运行迁移以创建表:

  ./yii console migrate --migrationPath=@dkhru/imageStore/migrations

配置

添加到您的数据库和模型中需要存储图片的字段

Schema::TYPE_BIGINT . ' UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY'

一旦扩展安装完成,在 common/config/main 中添加组件,在 db 组件之后

         'iStore'=>[
            'class'=>'dkhru\imageStore\components\ImageStore',
            'storePath'=>Yii::getAlias('@common/image-store'), // Path where files generated
            'publicPath'=>Yii::getAlias('@storage'),           // Path where link generated
            'publicUrl'=>Yii::getAlias('@storageUrl'),         // Url to nginx location for Public Path
            'defaultVariants'=>[                               // Default image size for resizing
               [ 'width'=>800, 'height'=>600 ],
               [ 'width'=>180, 'height'=>135 ],
            ],
            'models'=>[                                        // array of models for attach behavior to
               [
                  'class'=>\common\models\Image::className(),  // model class
                  'fields'=>[                                  // array of fields in model for store images
                     'image_id'=>[],
                  ],
               ],
               [
                  'class'=>\common\models\User::className(),
                  'fields'=>[
                     'avatar_id'=>[
                        'variants'=>[                          // image sizes for field if not set using defaultVariants
                           [ 'width'=>128, 'height'=>128 ],
                        ],
                     ],
                  ],
               ],
            ]
         ]

要初始化组件,请运行

  
  
    ./yii istore/init
    
    Create FK
    Add stores
    
    PHP Doc for add to common\models\Image class:
     * @mixin \dkhru\imageStore\components\ImageBehavior
     * @property \dkhru\imageStore\components\ImageStore $iStore
     * @property \dkhru\imageStore\models\Image $image
    
    PHP Doc for add to common\models\User class:
     * @mixin \dkhru\imageStore\components\ImageBehavior
     * @property \dkhru\imageStore\components\ImageStore $iStore
     * @property \dkhru\imageStore\models\Image $image
     

此控制台命令创建外键,初始化数据库中的数据,并返回配置模型的 PHP 类文档

使用方法

组件在初始化时为配置模型附加行为,并映射控制台和Web控制器到引导界面

在目标模型中附加行为之后,您可以使用名为 <Field name>_image 的属性来使用与图片的关系。如果您只有一个名为 image_id 的字段,则必须简单地使用 image 而不是 <Field name>_image

要保存图片,请简单使用 YourModel->setImage(<UploadedFile>,<variants array>, <Field name>) 方法。然后保存图片,该方法为文件生成哈希并查找存储。如果某些图片已存储,则不存储它。生成未存储的变体,链接到 YourModel(设置 YourModel->image_id)并返回图片