Skip to main content

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

Comments

Popular posts from this blog

Generate XML file in Cakephp

Steps to Generate XML file using CakePHP: Step-1 Enable to parse xml extension in config route.php file.     Router::parseExtensions('xml'); Step-2 Add Request Handler Component to the Controller    var $components = array(‘RequestHandler’); Step-3 Add controller Action For XML Generation in Post Controller     function generateXMLFile()     {         if ($this->RequestHandler->isXml()) { // check request type             $this->layout = 'empty'; // create an empty layout in app/views/layouts/empty.ctp              }        }  Add header code in empty layout <?php header('Content-type: text/xml');?> <?php echo $this->Xml->header(); ?> <?php echo $content_for_layout; ?> Step-4 Set up View To generate XML Create xml folder inside Posts vi...

Simple JavaScript Object and Class Examples

In JavaScript, most things are objects. An object is a collection of related data and/or functionality Namespace: Everything you create in JavaScript is by default global. In JavaScript namespace is Global object . How to create a namespace in JavaScript? Create one global object, and all variables, methods, and functions become properties of that object. Example:  // global namespace var MYAPP = MYAPP || {}; Explaination: Here we first checked whether MYAPP is already defined.If yes, then use the existing MYAPP global object, otherwise create an empty object called MYAPP How to create sub namespaces? // sub namespace MYAPP.event = {}; Class JavaScript is a prototype-based language and contains no class statement.JavaScript classes create simple objects and deal with inheritance. Example: var Person = function () {}; Explaination: Here we define a new class called Person with an empty constructor. Use the class keyword class Calculation {}; A class expr...

How to Add Next Previous links to The Event Calendar

Add Next/Previous links to The Event Calendar Wordpress Plugin Add code to your child theme’s functions.php file /**  * Allows visitors to page forward/backwards in any direction within month view */ if ( class_exists( 'Tribe__Events__Main' ) ) { class ContinualMonthViewPagination {     public function __construct() {         add_filter( 'tribe_events_the_next_month_link', array( $this, 'next_month' ) );         add_filter( 'tribe_events_the_previous_month_link', array( $this, 'previous_month' ) );     }     public function next_month() {         $url = tribe_get_next_month_link();         $text = tribe_get_next_month_text();         $date = Tribe__Events__Main::instance()->nextMonth( tribe_get_month_view_date() );         return '<a data-month="' . $date . '" href="' . $url . '" rel="next"...