/yii2-gallery

Module to upload pictures for the model and automatically generate a preview image

Primary LanguagePHPOtherNOASSERTION

Yii2-gallery

Это модуль был создан, чтобы дать возможность быстро загружать в админке картинки, добавлять титульник, описание, альтернативный текст, а также задать положение (чем выше значение тем выше в списке будет изображение).

Установка

Выполнить команду

php composer require pistol88/yii2-gallery "*"

Или добавить в composer.json

"pistol88/yii2-gallery": "*",

И выполнить

php composer update

Миграция

php yii migrate/up --migrationPath=@vendor/pistol88/yii2-gallery/migrations

Подключение и настройка

В конфигурационный файл приложения добавить модуль gallery

    'modules' => [
        'gallery' => [
            'class' => 'pistol88\gallery\Module',
            'imagesStorePath' => dirname(dirname(__DIR__)).'/frontend/web/images/store', //path to origin images
            'imagesCachePath' => dirname(dirname(__DIR__)).'/frontend/web/images/cache', //path to resized copies
            'graphicsLibrary' => 'GD',
            'placeHolderPath' => '@webroot/images/placeHolder.png',
        ],
        //...
    ]

К модели, к которой необходимо аттачить загружаемые картинки, добавляем поведение:

    function behaviors()
    {
        return [
            'images' => [
                'class' => 'pistol88\gallery\behaviors\AttachImages',
                'mode' => 'gallery',
                'quality' => 60,
                'galleryId' => 'picture'
            ],
        ];
    }

*mode - тип загрузки. gallery - массовая загрузка, single - одиночное поле, если вам необходимо сжатие то установите quality (0 - 100) где 0 - максимальное сжатие, 100 - минимальное сжатие. galleryId - идентификатор галереи, если у вас возникает конфликт при одинаковых имён класса

Использование

Использовать можно также, как напрямую:

$images = $model->getImages();
foreach($images as $img) {
    //retun url to full image
    echo $img->getUrl();

    //return url to proportionally resized image by width
    echo $img->getUrl('300x');

    //return url to proportionally resized image by height
    echo $img->getUrl('x300');

    //return url to resized and cropped (center) image by width and height
    echo $img->getUrl('200x300');

    //return alt text to image
    $img->alt

    //return title to image
    $img->title
    
    //return description image
    $img->description
}

Виджеты

Загрузка картинок осуществляется через виджет. Добавьте в _form.php внутри формы CRUDа вашей модели. Виджету передаются следующие параметры: model => Модель к которой будут привязаны картинки, по умолчанию null; previewSize => размер превью загруженных изображений, по умолчанию '140x140'; label => метка для виджета по умолчанию 'Изображение'; fileInputPluginLoading => нужно ли показывать индикатор загрузки прогресса в месте ввода, по умолчанию true; fileInputPluginOptions => массив свойств виджета kartik/file/fileInput, по умолчанию [];

Не забудьте php<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> для формы.

<?=\pistol88\gallery\widgets\Gallery::widget(
    [
        'model' => $model,
        'previewSize' => '50x50',
        'fileInputPluginLoading' => true,
        'fileInputPluginOptions' => []
    ]
); ?>