phpNT - Cropper
, (*1)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΡΠ΅Π·Π°Π½ΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΠ ΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
Π‘ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠΈ:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°:, (*2)
php composer.phar require "phpnt/yii2-cropper" "*"
ΠΈΠ»ΠΈ, (*3)
composer require phpnt/yii2-cropper "*"
ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² composer.json ΡΠ°ΠΉΠ», (*4)
"phpnt/yii2-cropper": "*"
ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ, (*5)
yii migrate --migrationPath=@vendor/phpnt/yii2-cropper/migrations
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
### ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
// Π² ΡΠ°ΠΉΠ»Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (main.php - Advanced ΠΈΠ»ΠΈ web.php - Basic)
// Π² controllerMap
...
'controllerMap' => [
'images' => [
'class' => 'phpnt\cropper\controllers\ImagesController',
],
],
### Π ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΠ΅Π·Π°ΡΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ:
use phpnt\cropper\ImageLoadWidget;
= ImageLoadWidget::widget([
'id' => 'load-user-avatar', // ΡΡΡΡΠΈΠΊΡ ID
'object_id' => $user->id, // ID ΠΎΠ±ΡΠ΅ΠΊΡΠ°
'imagesObject' => $user->photos, // ΡΠΆΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
'images_num' => 1, // ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
'images_label' => $user->avatar_label, // ΠΌΠ΅ΡΠΊΠ° Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
'imageSmallWidth' => 750, // ΡΠΈΡΠΈΠ½Π° ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΡ
'imageSmallHeight' => 750, // Π²ΡΡΠΎΡΠ° ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΡ
'imagePath' => '/uploads/avatars/', // ΠΏΡΡΡ, ΠΊΡΠ΄Π° Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°Π»ΠΈΠ°ΡΠ°
'noImage' => 2, // 1 - no-logo, 2 - no-avatar, 3 - no-img ΠΈΠ»ΠΈ ΠΏΡΡΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅
'buttonClass'=> 'btm btn-info', // ΠΊΠ»Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ "ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π°Π²Π°ΡΠ°Ρ"/"Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π°Π²Π°ΡΠ°Ρ" / ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ btm btn-info
'previewSize'=> 'file', // ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠ΅Π²ΡΡ(Π»ΠΈΠ±ΠΎ file_small, Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΡΡΠΎ file)
'pluginOptions' => [ // Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°
'aspectRatio' => 1/1, // ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½ ΡΠ°ΠΌΠΊΠΈ ΠΎΠ±ΡΠ΅Π·ΠΊΠΈ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅.
'strict' => false, // true - ΡΠ°ΠΌΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΠΎΠ΄ΠΈΡΡ Π·Π° Ρ
ΠΎΠ»ΡΡ, false - ΠΌΠΎΠΆΠ΅Ρ
'guides' => true, // ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΠ½ΠΊΡΠΈΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ Π² ΡΠ°ΠΌΠΊΠ΅
'center' => true, // ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ΅Π½ΡΡ Π² ΡΠ°ΠΌΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
'autoCrop' => true, // ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ°ΠΌΠΊΡ ΠΎΠ±ΡΠ΅Π·ΠΊΠΈ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅
'autoCropArea' => 0.5, // ΠΏΠ»ΠΎΡΠΈΠ΄Ρ ΡΠ°ΠΌΠΊΠΈ Π½Π° Ρ
ΠΎΠ»ΡΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ autoCrop (1 = 100% - 0 - 0%)
'dragCrop' => true, // ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΠ°ΠΌΠΊΠΈ ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠΈ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Ρ
ΠΎΡΡΠ° (false - Π½Π΅Π»ΡΠ·Ρ)
'movable' => true, // ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ
ΠΎΠ»ΡΡΠ° (false - Π½Π΅Π»ΡΠ·Ρ)
'rotatable' => true, // ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ°ΡΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
'scalable' => true, // ΠΌΠ°ΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
'zoomable' => false,
]]);
?>
<div class="col-md-12">
<?= ImageLoadWidget::widget([
'id' => 'load-user-photos', // ΡΡΡΡΠΈΠΊΡ ID
'object_id' => $user->id, // ID ΠΎΠ±ΡΠ΅ΠΊΡΠ°
'imagesObject' => $user->photos, // ΡΠΆΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
'images_num' => 3, // ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
'images_label' => 'userPhotos', // ΠΌΠ΅ΡΠΊΠ° Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
'imageSmallWidth' => 750, // ΡΠΈΡΠΈΠ½Π° ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΡ
'imageSmallHeight' => 750, // Π²ΡΡΠΎΡΠ° ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΡ
'imagePath' => '/uploads/avatars/', // ΠΏΡΡΡ, ΠΊΡΠ΄Π° Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°Π»ΠΈΠ°ΡΠ°
'noImage' => 3, // 1 - no-logo, 2 - no-avatar ΠΈΠ»ΠΈ ΠΏΡΡΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅
'pluginOptions' => [ // Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°
'aspectRatio' => 16/9, // ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½ ΡΠ°ΠΌΠΊΠΈ ΠΎΠ±ΡΠ΅Π·ΠΊΠΈ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅.
'strict' => false, // true - ΡΠ°ΠΌΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΠΎΠ΄ΠΈΡΡ Π·Π° Ρ
ΠΎΠ»ΡΡ, false - ΠΌΠΎΠΆΠ΅Ρ
'guides' => true, // ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΠ½ΠΊΡΠΈΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ Π² ΡΠ°ΠΌΠΊΠ΅
'center' => true, // ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ΅Π½ΡΡ Π² ΡΠ°ΠΌΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
'autoCrop' => true, // ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ°ΠΌΠΊΡ ΠΎΠ±ΡΠ΅Π·ΠΊΠΈ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅
'autoCropArea' => 0.5, // ΠΏΠ»ΠΎΡΠΈΠ΄Ρ ΡΠ°ΠΌΠΊΠΈ Π½Π° Ρ
ΠΎΠ»ΡΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ autoCrop (1 = 100% - 0 - 0%)
'dragCrop' => true, // ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΠ°ΠΌΠΊΠΈ ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠΈ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Ρ
ΠΎΡΡΠ° (false - Π½Π΅Π»ΡΠ·Ρ)
'movable' => true, // ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ
ΠΎΠ»ΡΡΠ° (false - Π½Π΅Π»ΡΠ·Ρ)
'rotatable' => true, // ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ°ΡΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
'scalable' => true, // ΠΌΠ°ΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
'zoomable' => false,
]]);
?>
</div>
### ΠΡΠΈΠΌΠ΅Ρ ΡΠ²ΡΠ·Π΅ΠΉ ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»ΠΈ:
public function getPhotos()
{
return $this->hasMany(Photo::className(),
[
'object_id' => 'id',
'type' => 'avatar_label',
])->andWhere(['deleted' => 0]);
}
// ΠΈΠ»ΠΈ
public function getPhotosSome()
{
return Photo::find()->where([
'object_id' => Yii::$app->user->id,
'type' => 'userPhotoes',
'deleted' => 0
])->all();
}
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΊΡΠΎΠ½ΠΎΠΌ:
, Π³Π΄Π΅ alias - Π°Π»ΠΈΠ°Ρ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ (ΠΏΡΠΈΠΌΠ΅ΡΡ):
ΠΠ΅ΡΡΠΈΡ:
### 0.0.1
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: