Yii2-gallery
ΠΡΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½, ΡΡΠΎΠ±Ρ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΡΡΡΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΈΡΡΠ»ΡΠ½ΠΈΠΊ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΊΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π΄Π°ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΡΠ΅ΠΌ Π²ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΌ Π²ΡΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅)., (*1)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, (*2)
php composer require deadly299/yii2-gallery "@dev"
ΠΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² composer.json, (*3)
"deadly299/yii2-gallery": "@dev",
Π Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, (*4)
php composer update
ΠΠΈΠ³ΡΠ°ΡΠΈΡ, (*5)
php yii migrate/up --migrationPath=@vendor/deadly299/yii2-gallery/src/migrations
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ gallery, (*6)
'modules' => [
'gallery' => [
'class' => 'deadly299\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',
'adminRoles' => ['administrator', 'admin', 'superadmin'],
],
//...
]
Π ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π°ΡΡΠ°ΡΠΈΡΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:, (*7)
function behaviors()
{
return [
'images' => [
'class' => 'deadly299\gallery\behaviors\AttachImages',
'mode' => 'gallery',
'quality' => 60,
'galleryId' => 'picture'
],
];
}
*mode - ΡΠΈΠΏ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. gallery - ΠΌΠ°ΡΡΠΎΠ²Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ°, single - ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΆΠ°ΡΠΈΠ΅ ΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ quality (0 - 100) Π³Π΄Π΅ 0 - ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΆΠ°ΡΠΈΠ΅, 100 - ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΆΠ°ΡΠΈΠ΅. galleryId - ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π³Π°Π»Π΅ΡΠ΅ΠΈ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΏΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
ΠΈΠΌΡΠ½ ΠΊΠ»Π°ΡΡΠ°, (*8)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ Π½Π°ΠΏΡΡΠΌΡΡ:, (*9)
$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, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ [];, (*10)
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅
php<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
Π΄Π»Ρ ΡΠΎΡΠΌΡ., (*11)
=\deadly299\gallery\widgets\Gallery::widget(
[
'model' => $model,
'previewSize' => '50x50',
'fileInputPluginLoading' => true,
'fileInputPluginOptions' => []
]
); ?>
= \deadly299\gallery\widgets\FrontendGallery::widget([
'model' => $model,
'countInput' => 2,
'classBlockRight' => 'col-sm-12',
'previewWidth' => '200px',
'previewHeight' => '150px',
'informationBlock' => false,
'otherInputsSettings' => [
'you-photo' => ['label' => 'ΠΠ°ΡΠ΅ ΡΠΎΡΠΎ', 'required' => true],
'our-work' => ['label' => 'ΠΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ°', 'required' => true],
],
]) ?>