2017 © Pedro Peláez
 

yii2-extension yii2-cloudinary

Yii2 Cloudinary Component

image

nikosid/yii2-cloudinary

Yii2 Cloudinary Component

  • Monday, February 12, 2018
  • by nikosid
  • Repository
  • 2 Watchers
  • 0 Stars
  • 31 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 1 Versions
  • 15 % Grown

The README.md

Yii2 file/image upload to Cloudinary component and behavior for ActiveRecord

This package contains Component and Behavior for upload and display files from Cloudinary service., (*1)

Installation

The preferred way to install this extension is through composer., (*2)

Either run, (*3)

php composer.phar require nikosid/yii2-cloudinary "dev-master"

or add, (*4)

"nikosid/yii2-cloudinary": "dev-master"

to the require section of your composer.json., (*5)

CloudinaryComponent

You need to configure cloudinary component in your application config., (*6)

    'components' => [
        'cloudinary' => [
            'class' => CloudinaryComponent::class,
            'cloud_name' => 'YOUR_CLOUD_NAME',
            'api_key' => 'YOUR_API_KEY',
            'api_secret' => 'YOUR_API_SECRET',
            'cdn_subdomain' => true,//optional
            'useSiteDomain' => false,
        ],
    ],

By setting $useSiteDomain to true you can make URLs to your doman and than proxy them to cloudinary server. By default it's false., (*7)

Example of nginx config for forward traffic to cloudinary server

    location /YOUR_CLOUD_NAME/ {
        proxy_pass https://res.cloudinary.com;
        proxy_set_header Host res.cloudinary.com;
    }

CloudinaryBehavior

This behavior allows you to add file uploading logic with ActiveRecord behavior., (*8)

Usage

Attach the behavior to your model class:, (*9)

    public function behaviors()
    {
        return [
            'cloudinary' => [
                'class' => nikosid\cloudinary\CloudinaryBehavior::class,
                'attribute' => 'picture',
                'publicId' => Yii::$app->name . '/articles/main{id}',
                'thumbs' => [
                    'large' => ['secure' => true, 'width' => 848, 'height' => 536, 'crop' => 'fill'],
                    'medium' => ['secure' => true, 'width' => 555, 'height' => 536, 'crop' => 'fill'],
                    'small' => ['secure' => true, 'width' => 130, 'height' => 125, 'crop' => 'fill'],
                ],
            ],
        ];
    }

Add validation rule:, (*10)


//For file upload public function rules() { return [ ['picture', 'image', 'extensions' => 'jpg, jpeg, gif, png', 'on' => ['insert', 'update']], ]; } //Or for url type field public function rules() { return [ ['url_picture', 'url',], ]; }

Example view file for upload file from local storage:, (*11)

<?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'picture')->fileInput() ?>
    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>
<?php ActiveForm::end(); ?>

Example view file for upload file from url:, (*12)

<?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'url_picture')->textInput() ?>
    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>
<?php ActiveForm::end(); ?>

File should be uploading fine., (*13)

You can also get generated thumbnail image url:, (*14)

    echo $model->getThumb('medium');

Both type of upload

You can also specify few attributes in priotiry order., (*15)

    public function behaviors()
    {
        return [
            'cloudinary' => [
                'class' => CloudinaryBehavior::class,
                'attribute' => 'picture,picture_url',
                'publicId' => Yii::$app->name . '/articles/main{id}',
                'thumbs' => [
                    'large' => ['secure' => true, 'width' => 848, 'height' => 536, 'crop' => 'fill'],
                    'medium' => ['secure' => true, 'width' => 555, 'height' => 536, 'crop' => 'fill'],
                    'small' => ['secure' => true, 'width' => 130, 'height' => 125, 'crop' => 'fill'],
                ],
            ],
        ];
    }

It means if user upload picture Cloudinary get it, but if not, we also check picture_url and try to upload it, (*16)

Licence

MIT, (*17)

The Versions

12/02 2018

dev-master

9999999-dev

Yii2 Cloudinary Component

  Sources   Download

MIT

The Requires

 

extension yii2 yii yii 2 behavior cloudinary nikosid