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();
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();
No comments:
Post a Comment