Skip to content

Instantly share code, notes, and snippets.

@zoghal
Created July 20, 2012 06:21
Show Gist options
  • Save zoghal/3149026 to your computer and use it in GitHub Desktop.
Save zoghal/3149026 to your computer and use it in GitHub Desktop.
CakePHP Event
// /app/Event/BlogEventListener.php
<?php
App::uses('CakeEventListener', 'Event');
class BlogEventListener implements CakeEventListener {
public function implementedEvents() {
return array(
'Controller.Blog.afterAdd' => 'myEventFunction', // assign event to function
);
}
public function myEventFunction($event) {
// $event->subject = the object the event was dispatched from
// in this example $event->subject = BlogController
$blog = $this->subject->Blog->find('first', array(
'conditions' => array('Blog.id' => $event->subject->Blog->id)
))
// whatever code you like here
}
?>
// /app/Controller/BlogsController.php
<?php
App::uses('AppController', 'Controller');
App::uses('CakeEvent', 'Event');
App::uses('BlogEventListener', 'Event');
class BlogsController extends AppController {
...
function beforeFilter() {
parent::beforeFilter();
// attach event
$this->getEventManager()->attach(new BlogEventListener(), 'Controller.Blog.afterAdd');
}
function add() {
...
if ($this->Blog->save($this->request->data)) {
// dispatch event
$this->getEventManager()->dispatch(new CakeEvent('Controller.Blog.afterAdd', $this));
$this->Session->setFlash(__('The blog has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The blog could not be saved. Please, try again.'));
}
...
}
...
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment