sashsvamir / yii2-gallery-manager

'zxbodya/yii-gallery-manager' 的端口。为 yii 提供的扩展,允许管理图片画廊

安装: 712

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 61

类型:yii2-extension

dev-master 2019-07-08 15:04 UTC

This package is not auto-updated.

Last update: 2024-09-23 16:53:28 UTC


README

这是 https://github.com/zxbodya/yii-gallery-manager 的 Yii2 版本

此端口具有以下功能

  • 保存原始文件图片,使用原始文件名

警告:预览版本

功能

  1. AJAX 图像上传
  2. 为每张图片可选名称和描述
  3. 可以在画廊中排列图片
  4. 为每张图片生成具有不同配置的多个版本
  5. 拖放

依赖

  1. Yii2
  2. Twitter Bootstrap 资产 (v3)
  3. Imagine 库
  4. JQuery UI (包含在 Yii 中)

安装

php composer.phar require --prefer-dist sashsvamir/yii2-gallery-manager "*@dev"

用法

添加迁移以创建图片表的表

class m150318_154933_gallery_ext extends \sashsvamir\galleryManager\migrations\m140930_003227_gallery_manager
{
}

或者更好——将迁移复制到您的应用程序中。

将 GalleryBehavior 添加到您的模型中,并配置它,为上传的文件创建文件夹。

public function behaviors()
{
    return [
         'galleryBehavior' => [
             'class' => GalleryBehavior::class,
             'type' => 'product',
             'extension' => 'jpg',
             'directory' => Yii::getAlias('@webroot') . '/images/product/gallery',
             'url' => Yii::getAlias('@web') . '/images/product/gallery',
             'versions' => [
                 'small' => function ($img) {
                     /** @var \Imagine\Image\ImageInterface $img */
                     return $img
                         ->copy()
                         ->thumbnail(new \Imagine\Image\Box(200, 200));
                 },
                 'medium' => function ($img) {
                     /** @var Imagine\Image\ImageInterface $img */
                     $dstSize = $img->getSize();
                     $maxWidth = 800;
                     if ($dstSize->getWidth() > $maxWidth) {
                         $dstSize = $dstSize->widen($maxWidth);
                     }
                     return $img
                         ->copy()
                         ->resize($dstSize);
                 },
             ]
         ]
    ];
}

在您的应用程序中的某个位置添加 GalleryManagerAction,也可以在这个步骤中添加一些对这一动作的安全检查。

public function actions()
{
    return [
       'galleryApi' => [
           'class' => GalleryManagerAction::class,
           // mappings between type names and model classes (should be the same as in behaviour)
           'types' => [
               'product' => Product::class
           ]
       ],
    ];
}

在您应用程序的某个位置添加 ImageAttachmentWidget,例如在编辑表单中。

    echo sashsvamir\galleryManager\GalleryManager::widget([
        'model' => $model,
        'behaviorName' => 'galleryBehavior',
        'apiRoute' => 'product/galleryApi',
        'options' => [
            'class' => 'form-group',
        ],
    ]);

完成!

现在,您可以使用以下方式使用上传的图片

foreach($model->getBehavior('galleryBehavior')->getImages() as $image) {
    echo Html::img($image->getUrl('medium'));
}

选项

使用非默认的画廊图片表名(默认为 {{%gallery_image}}

  1. 添加创建所需表的迁移
  2. 更改行为配置中的 tableName 属性