1.0.0 2014-01-20 19:29 UTC

This package is auto-updated.

Last update: 2022-06-04 18:42:24 UTC


Cloudinary CakePHP plugin provides seemless integration of Cloudinary services with CakePHP framework for simple and efficient management of applications images

Explore the PhotoAlbumCake sample for usage example.


  • PHP 5.3 or higher
  • CakePHP 2.x



  1. Create a new directory for myapp

     mkdir myapp
     cd myapp
  2. Install CakePHP using composer (based on CakePHP Cookbook

    1. Setup Composer and get CakePHP:

       echo '{}' > composer.json
       composer config vendor-dir Vendor
       composer config repositories.0 pear ''
       composer require 'pear-cakephp/cakephp:>=2.4.0'
    2. Bake a new project

       Vendor/bin/cake bake project .
    3. You may define CAKE_CORE_INCLUDE_PATH to a relative path as suggested in the cookbook by adding the following to webroot/index.php:

           ROOT . DS . APP_DIR . '/Vendor/'
    4. Add the following lines to Config/bootstrap.php:

       // Load composer autoload.
       require APP . '/Vendor/autoload.php';
       // Auto load CloudinaryCake plugin
  3. Install Cloudinary CakePHP

     composer require 'cloudinary/cloudinary_cake_php:>=1.0.0'
  4. Configure Cloudinary using the CLOUDINARY_URL environment variable, or the Config/CloudinaryPrivate.php configuration file


  1. Create a CakePHP project

  2. Download cloudinary_php from here

  3. Extract the cloudinary_php archive into vendors library

  4. Download cloudinary_cake_php from here

  5. Extract the cloudinary_cake_php archive into vendors library

  6. Configure cloudinary

    1. Environment variable - export CLOUDINARY\_URL = "cloudinary://API_KEY:API_SECRET@CLOUD_NAME" (Check your settings in Cloudinary console)
    2. Create app/Config/CloudinaryPrivate.php using vendors/cloudinary_php/samples/PhotoAlbumCake/Config/CloudinaryPrivate.php.sample
  7. Load the cloudinary plugin by adding the following lines to app/Config/bootstrap.php:

     // Load plugin
     CakePlugin::load('CloudinaryCake', array('bootstrap' => true, 'routes' => false,
         'path' => ROOT . DS 'vendors' . DS 'cloudinary_php' . DS . 'cake_plugin' . DS . 'CloudinaryCake' . DS));
     // required when using `CloudinaryPrivate.php` for cloudinary configuration



CloudinaryBehavior adds Cloudinary support for CakePHP Models. It helps storing references to cloudinary images in a simple text field of your model.


Assuming you have a Photo model with cloudinaryIdentifier text field for storing cloudinary images references - you can add the following code to your model


class Photo extends AppModel {
    public $actsAs = array('CloudinaryCake.Cloudinary' => array('fields' => array('cloudinaryIdentifier')));


This will allow you to access the cloudinaryIdentifier as a CloudinaryField. Here's a sample controller code -


class PhotosController extends AppController {
    // set the specified Photo's image to the default one
    public function set_default_image($id) {
        $options = array('conditions' => array('Photo.' . $this->Photo->primaryKey => $id));
        $photo = $this->Photo->find('first', $options);


    // Creates a new image from post data. Sets $image_url to the cloudinary url of the image with the given transformation.
    public function add() {
        $success = $this->Photo->save($this->request->data);
        if ($success) {
            $image_url = $this->Photo->data['Photo']['cloudinaryIdentifier']->url(array(
                "width" => 100, "height" => 100, "crop" => "fill"));
	    $this->set('photo', $this->Photo->data);


CloudinaryHelper is an extension of the CakePHP InputHelper. It can be used for loading cloudinary_js, presenting images, creating forms with image inputs and more.


You can load CloudinaryHelper using two methods -


class PhotosController extends AppController {
    // Replace the FormHelper with CloudinaryHelper (recommended - accessible as $this->Form)
    public $helpers = array('Html', 'Form' => array('className' => 'CloudinaryCake.Cloudinary'));

    // Add CloudinaryHelper in addition to the default FormHelper (accessible as $this->Cloudinary instead of $this->Form)
    //public $helpers = array('Html', 'Form', 'CloudinaryCake.Cloudinary');


You then can use it in any view of the controller:


    # Include cloudinary_js dependencies (requires jQuery)
    echo $this->Form->cloudinary_includes();
    # Setup cloudinary_js using the current cloudinary_php configuration
    echo cloudinary_js_config();


    <span><?php echo __('Current Photo:'); ?></span>
    <?php echo $this->Form->cl_image_tag($photo['Photo']['cloudinaryIdentifier'],
        array("width" => 60, "height" => 60, "crop" => "thumb", "gravity" => "face")); ?>

    <?php echo $this->Form->create('Photo', array('type' => 'file')); ?>
        <legend><?php echo __('Edit Photo'); ?></legend>
            echo $this->Form->input('id');
            # Backend upload:
            echo $this->Form->input('cloudinaryIdentifier');
            # Direct upload:
            #echo $this->Form->input('cloudinaryIdentifier', array("type" => "direct_upload"));
    <?php echo $this->Form->end(__('Submit')); ?>