Tuesday, 2 August 2016

Create Plugins in Cakephp

How To Create Plugins in CakePHP

Step 1: inside /app/Plugin Folder create a folder "Admin" Here "Admin" is plugin name.

Step 2: How to load plugin. Either you load Plugin in bootstrap.php file or in any controller action.
Use: CakePlugin::load('Admin');

/app/Plugin/Admin/Model/AdminAppModel.php:
class AdminAppModel extends AppModel {
}


Step 3: Create Controller inside plugin
// app/Plugin/Admin/Controller/ContactsController.php
If you want to be able to access your plugin with a URL, defining an AppController for the plugin is required.

App::uses('AppController', 'Controller');
class AdminAppController extends AppController {

}

class ContactsController extends AdminAppController {
public $uses = array('Admin.Contact');

public function index() {
//...
}
}

Note: You can do inter-plugin communication by using $this->requestAction('/plugin_name/controller_name/action'); in your controllers.

Step 4: Create Model inside plugin
If you want to be able to access your plugin with a URL, defining an AppModel for the plugin is required.
/app/Plugin/Admin/Model/AdminAppModel.php:
App::uses('AppModel', 'Model');
class AdminAppModel extends AppModel {

}

/app/Plugin/Admin/Model/Contact.php:
class Contact extends AdminAppModel {

}

How to Use Plugin model
1. $this->loadModel('Admin.Contact');
2. public $uses = array('Admin.Contact');
3. ClassRegistry::init('Admin.Language')->find('all');

Step 5: Create Helper inside plugin
App::uses('AppHelper', 'View/Helper');
class TestHelper extends AppHelper {
public function showResult(){
return ClassRegistry::init('Admin.Language')->find('all');
}
}

How to Use Plugin Helper
1. Inside Controller use
public $helpers = array('Admin.Test')

2. Inside View
$this->Test->showResult(); // Here Test is Plugin Helper

Important Term
Note: Loading classes
Syntax: App::uses(string $class, string $package);
eg: Controllers
App::uses('PostsController', 'Controller');
Components
App::uses('AuthComponent', 'Controller/Component');
Models
App::uses('MyModel', 'Model');
Views
App::uses('ThemeView', 'View');
Helpers
App::uses('HtmlHelper', 'View/Helper');
Vendors
App::uses('Textile', 'Vendor');

Including files with App::import() // This method is equivalent to require‘ing the file.
eg:
// The same as require('Controller/UsersController.php');
App::import('Controller', 'Users');

// We need to load the class
$Users = new UsersController();

// If we want the model associations, components, etc to be loaded
$Users->constructClasses();

0 comments:

Post a Comment