Example #1
0
 /**
  *  this is the callback that will be registered to the name returned from {@link getEventName()}
  *  
  *  @param  Event $event
  */
 public function handle(Event $event)
 {
     $container = $this->getContainer();
     $request = $container->getRequest();
     // canary, we pass the exception on if it is command line request
     if ($request->isCli()) {
         return;
     }
     //if
     $e = $event->getParam();
     $response = $container->getResponse();
     if ($e instanceof HttpException) {
         $response->setStatusCode($e->getCode(), $e->getStatusMessage());
         // $event->setParam(false);
         ///$event->setParam(sprintf('%s - %s', $e->getCode(), $e->getStatusMessage()));
         $response->setTitle(sprintf('%s - %s', $e->getCode(), $e->getStatusMessage()));
     } else {
         $response->setTitle($e->getMessage());
     }
     //if/else
     $response->setTemplate('page');
     // we reset to the default page in case it was changed
     $response->setField('content_template', 'error.php');
     $response->setField('e', $e);
     $event->setParam(null);
 }
Example #2
0
 /**
  *  test that an event can be listened for and notified
  */
 public function testListen()
 {
     $closure = function (Event $event) {
         $test = $event->getField('test');
         $test->assertSame('test', $event->getName());
         $test->assertFalse($event->isPersistent());
         $event->setField('foo', 1);
     };
     $this->dispatch->listen('test', $closure);
     $event = new Event('test', array(), false);
     $event->setField('test', $this);
     $event = $this->dispatch->broadcast($event);
     $this->assertEquals(1, $event->getField('foo'));
 }
Example #3
0
 /**
  *  create a new Event
  *  
  *  @param  string  $msg  the info message
  *  @param  array $options  any other values you want to pass to the event callback   
  */
 public function __construct($msg, array $options = array())
 {
     $this->msg = $msg;
     parent::__construct('framework.info', $options, true);
 }