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');

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::uses('AppModel', 'Model');
class AdminAppModel extends AppModel {


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');
App::uses('AuthComponent', 'Controller/Component');
App::uses('MyModel', 'Model');
App::uses('ThemeView', 'View');
App::uses('HtmlHelper', 'View/Helper');
App::uses('Textile', 'Vendor');

Including files with App::import() // This method is equivalent to require‘ing the file.
// 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


Post a Comment